UiPath小技集
はじめに
2020年はRPA開発にがっつり携わった年でした。
この1年で蓄えたナレッジをまとめようと思います。
ログイン情報を安全に設定・入力する方法
当然の事ではありますが、セキュリティの観点からベタ書きは危険です。
ではどうするか?
Windows資格情報を利用してログイン情報を設定し、
取得の処理と暗号化状態で入力する処理を実装するのが望ましいです。
事前準備:
・Windows資格情報にログイン情報を設定する
・StudioからUiPath.Credentials.Activitiesを導入
実装:
1. Get Secure Credential
アクティビティを使ってWindows資格情報からログイン情報を取得
2. Type Secure Text
アクティビティを使ってパスワードを入力
Excelファイル開きっぱなしにする方法
通常、Excelアプリケーションスコープ
を抜けるとファイルは閉じられますが、共有フォルダにあるファイルなどはロボットの実行中はずっと開きっぱなしにしたいということがあります。
Excelアプリケーションスコープ
内にすべての処理を記述するというのも手ですが、処理が長くなる場合、可読性が悪くなります。
そこで使えるのが、Excelアプリケーションスコープ
のプロパティに用意されているブックです。
ここに変数を設定するとスコープを抜けた後も開かれたままとなり、明示的にブックを閉じる
アクティビティを使わない限り閉じません。
別のExcelアプリケーションスコープ
で同じファイルを操作したい場合は、プロパティの既存のブックに前の処理で出力したブックの変数を設定することで、同じファイルを操作することが出来ます。
実装:
1. Excelアプリケーションスコープ
アクティビティ(スコープA)を配置。プロパティのブック欄に変数:bookAを設定 ※画像1参照
2. Excelアプリケーションスコープ
アクティビティ(スコープB)を配置。プロパティの既存のブック欄にスコープAのブック欄で出力した変数:bookAを設定 ※画像2参照
3. ブックを閉じる
アクティビティを配置。ブックに変数:bookAを設定
Excelで読み込んだ日時が正しく取得できない時の対応方法
下記の25時を表現する値などをExcelから読み取る時、思った通りに値が取得できないことがあります。
(下記の場合は小数点(シリアル値)として読み込まれます。)
Excelの書式設定によって解決することもありますが、書式設定を施すことが難しい場合、セルを読み込み
アクティビティや範囲を読み込み
アクティビティにあるプロパティの表示形式を保持のチェックをONにすると表示された見た目のままの値が取得できます。
クリックや文字入力などのUI操作が安定しない時に見るべきポイント
UI要素を操作するクリックアクティビティや文字の入力アクティビティなどを使用する際、
動作が安定しないことがあります。
以下に挙げるポイントを調整してみるのがいいでしょう。
セレクターの記述
アクティビティのオプションメニュー(横三本線のボタン)からセレクターを編集をクリックしセレクターの記述を確認します。
具体的には一意の要素を指し示す記述となっているか?動的な値が含まれていないか?などです。
必要に応じてUiExplorerを開き、属性や要素の追加、動的な値を*(アスタリスク)に変更などをします。
プロパティの準備完了まで待機の設定
処理の待機の仕方を確認します。
ブラウザ操作の場合、INTERACTIVE
では対象のエレメントの状態のみを待つのに対し、COMPLETE
ではページ全体が読み込まれるのを待ってから実行されます。
INTERACTIVE
で空振りする場合はCOMPLETE
にしてみるといいでしょう。
参考:https://www.uipath.com/ja/blog/developer/click-activity
クリックのシミュレート・入力をシミュレート、ウィンドウメッセージを送信
クリック
アクティビティの場合は、クリックのシミュレートとウィンドウメッセージ送信。
文字を入力
アクティビティの場合は、入力のシミュレートとウィンドウメッセージ送信。
これらの設定を確認します。
デフォルトではどちらも空値となっており、処理速度は最も遅くありますが人が操作した場合と同じ動きとなり安定しています。
ただし、人と同じ動き=実際にマウス操作・キー操作している状態と同じのため、実行中にPCを操作した場合に影響を受けてしまします。
シミュレートもしくはウィンドウメッセージ送信のどちらかをTrueにした場合、PC操作の影響を受けなくなり、処理速度も上がりますが操作対象のアプリケーションによって互換性の問題があり正しく挙動しないことがあるため検証が必要です。
覚えておくと便利なVB.NETの知識
UiPathはプログラミングソースを書かなくても実装できるツールですが、UiPath Studio ProではVB.NETと同様に型の概念があり、VB.NETメソッドに対応するアクティビティが網羅されているわけでもないのでVB.NETメソッドをある程度知っておいたほうが実装が容易くなります。
以下ではよく使用し覚えておいた方が便利なVB.NETの知識を紹介します。
(型の概念は下記では説明しておりません。ある程度プログラミング知識のある方向けの説明としております。)
文字列の結合方法
文字が入っている変数を2つ以上、繋げる場合は以下の通り記述することができます。
valueA & valueB
valueA + valueB
結合する変数が多い場合はString.Concatメソッドを使用すると可読性がよくなるでしょう。
String.Concat(valueA, valueB)
ファイルパスを生成するためにディレクトリ名とファイル名を結合する場合などではPath.Combineメソッドを使用するのがいいでしょう。
「\」を記述する必要がないため可読性がよくなります。
Path.Combine(valueA, valueB)
型を変換する方法
文字列(String型)にしたい場合は変数名の後に.ToStringで基本的に変換できます。
valueA.ToString
文字列(String型)→数値型(Int型)の場合は、CIntメソッドが使用しやすいです。
CInt(valueA)
文字列(String型)→日時型(DateTime型)の場合は、DateTime.Parseメソッドで変換できます。
DateTime.Parse(valueA)
※上記は私個人の使用頻度の高い変換方法を紹介しております。
※場合によって他の変換方法を取るべきケースもありますので、調べながら実装してみてください。
DataTableから値を取得する方法
DataTableの1件目の1列目を取得する場合は以下のように記述します。
tableA.Rows(0).Item(0).ToString
Rowsはヘッダー行を除いた行を0番目から指定します。
Itemは列の位置を0番目から指定します。
またItemは列の名称でも指定することができ、CSVを読み込みアクティビティなどで先頭行をヘッダーとするがチェックONの時はCSVの1行目に記述されている文字列で指定することができます。
日付の操作
現在日時を取得する際は以下のように記述します。
DateTime.Now
文字列(String型)にする際は以下になります。
カッコ内にルールに従った記述を書くことでフォーマットを指定することも出来ます。
DateTime.Now.ToString
DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")
現在日時より日にちを計算する際は以下の通りとなります。
AddDays
メソッドの他、AddMonths
メソッドやAddHours
メソッドなどが用意されています。
DateTime.Now.AddDays(1.0) // 結果:明日の日時
DateTime.Now.AddMonths(1) // 結果:来月の日時
DateTime.Now.AddHours(1) // 結果:1時間後の日時
まとめ ー2020年を振り返ってー
1月からUiPath開発に携わりはじめ、どっぷりとUiPathに浸かった1年でした。
UiPathイヤーの1年の締めくくりとしてUiPath小技集の投稿が出来て良かったです。
2021年もUiPathに携わっていく予定なので、引き続き投稿ができればと思っております。
実践的で、分かりやすい記事が書けるよう今後も頑張ります!
Author And Source
この問題について(UiPath小技集), 我々は、より多くの情報をここで見つけました https://qiita.com/Shiho_anyplus/items/4dbbd9ea32af6dcb87b5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .