UiPathのノート
2023年04月26日 14:51
UiPath で利用する関数はVB.Net をベースとする。
具体例とともに書く
関数名、引数、戻り値を書く
その際、データ型も書く
アクティビティについても書く
アクティビティはどういうときに使うかと
利用時の注意事項を書く
主に使うマウス操作のアクティビティには
クリック
ダブルクリック
ホバー
がある。
マウス操作がうまく効かない場合は
ブラウザを操作する場合は
ブラウザ専用のアクティビティを活用することで
オートメーションに対応できる。
指定の URL でブラウザを開く。
続く Do アクティビティには URL を開いた後のアクティビティを追加する。
ex ) URL を開いたらログイン ID パスワードを入力してログインをクリックする。
既に開いているブラウザを利用するときに利用
既にブラウザを開いている場合は
UiPath.Core.Browser 型の変数を用いることで任意のブラウザを操作することが可能
ただし、UiPath.Core.Browser 型の変数で操作対象のブラウザを格納するしていること
ex ) ブラウザを開くの出力で UiPath.Core.Browser 型の変数 Browser を出力する。
Browser をブラウザにアタッチに入力してウィンドウを補足する。
ウィンドウの最大化、最小化とかそんなやつ
UiPath において条件分岐は
条件分岐アクティビティとフロー条件分岐アクティビティの 2 つが存在する。
シーケンスアクティビティの中で利用される通常の条件分岐
特徴としては条件式と合わせて if-else を書くという
プログラマーが一番イメージしやすいアクティビティ
シーケンス条件分岐と呼ぶとしっくりきそう。
フローチャートアクティビティの中で利用される条件分岐
特徴としては中に書くが条件式だけというところ
そのあとの処理は左右に枝分かれた状態で定義する。
条件が多い時に利用すると前述のシーケンス条件分岐よりも
多少アクティビティの連結が長くなるが
アクティビティの見通しを良くするということに貢献しそうではある。
繰り返しを行うアクティビティには While と For Each が存在する。
条件式が true のときに繰り返す。
繰り返しに用いられる判定は前置判定と後置判定が存在する。
ゆえに、While アクティビティには 2 種類の繰り返しが存在する。
VBA で例えると
前置判定 While ~ Loop
後置判定は Do~While
となる。
引数として渡された配列を先頭から順に取り出す。
配列でループを行う際は For Each を使うとやりやすい。
要素の有無を検出して True/False を返す ElementExist アクティビティを繰り返しで活用する場合は While が良い。
データテーブルやファイルのテキストから作成した配列を順に取り出すときは For Each が良い。
UiPath は描いた通りに動作する為
接続先と接続元のアクティビティを交互に矢印でつなぐとループを作成できる。
ただし、無限ループになる可能性がある為、サーバ接続に等には利用しないこと。
文字列分割の関数
Split(文字列,区切り文字)
指定された分だけ左から文字列を取り出す関数
文字列から特定の文字を探す関数
見つかった場合は見つかった位置を返し見つからない場合は 0 を返す。
文字列置換のメソッド
関数ではなくメソッド
文字列検索のメソッド
関数ではなくメソッド
ザックリ言うと、表形式のデータを保存できるデータ型
VBA でいうところのIHTMLTableObjectに使い方が似ている。
番号 | 名前 |
---|---|
1 | ジョン |
2 | リーナス |
3 | ジョブズ |
上記のような DataTable 型変数 tbl を作成した時の動きを考えると
DataTable にヘッダ(列の説明)がない場合は参照する番号がズレる
また、テーブルオブジェクトは意図して生成するか
画面上、Excel などから取得してオブジェクトを生成しなければならない。
オブジェクトを生成しなければならない理由としては
スキーマ、列の定義が必要だからだと思われる。
データの追加、削除をデータテーブルに対して行う場合はアクティビティを通して実行する必要がある。
Microsoft Scripting Runtime でいうところの
「FileSystemObject」で利用できる「GetFolder(args).GetFiles」に相当する。
ディレクトリ配下の txt を全て取得する場合は
Array of [String]で変数を宣言して代入アクティビティで代入すれば良い。
上記の String 型の配列、fileList からデータを取り出す際は
For each アクティビティを利用することで順に取り出すことが可能である。
Windows にはあらかじめ用意された特殊なディレクトリが存在する。
UiPath で利用する場合は「Get Environment Folder」 を活用する。
デスクトップのルートディレクトリを指定する場合は Desktop を指定する。
一番シンプルな方法では
DateTime 型変数の開始時間と同じく DateTime 型変数の終了時間を定義して
開始終了の Now を代入して引き算で求める方法がある。
UI に対応するアクティビティを知る。
例えば、実際に経験したことで
OracleForm は SetText アクティビティではなく
TypeInto アクティビティを使わないと
文字列を入力できない。
例えば、SetVisibleText を使う場合は
画面上に表示された文字列を取得するので
事前に画面の最大化などをして画面表示の担保する必要がある。
利用するデータのデータ設計は必要だが
それを最初に持ってくると効率化悪いので
とりあえず、作ってみる。
このときに重要なことは
メタデータをアクティビティに直接書かず
変数で定義してからアクティビティに入れる。
そして、変数の既定値にテスト用のメタデータを設定する。
よくある動作はどこでも使えるので
ライブラリ化することで再利用できる??
アクティビティに引数を渡すように作る。
例えば
ブラウザの名前をつけて保存の場合は
ファイルのフルパスを与える作りでライブラリ化することで
使いまわせるのでは
レンジ指定のセル貼り付けよりもセルオブジェクト操作による貼り付けのほうが早い。
値を代入するだけであればもちろん、直接代入するほうが早い。
レンジ指定のセル貼り付け < セルオブジェクト操作による貼り付け < 直接代入
ゆえに PasteSpecial メソッドを複数回に渡って実行するのであれば
直接、値を代入してあげたほうが早い。
Excel は常にイベント発生を監視している為
その分、セルやワークシートを操作したときに遅延が生じる。
イベントの類を抑えたい場合は
Application オブジェクトの「EnableEvents」プロパティを false に設定する。
どちらでも基本、セルを操作することは可能だがスピードを求める場合は
Cells のほうが若干ながら早い。
早い理由として Cells は縦横のアドレスを指定しているのに対して
Range は利用する度に座標変換が入る為、遅延が生じる。
Insert メソッド利用前に Copy メソッドを実行すると
コピーして挿入することが可能
開始日を明日の日付に設定して
結果をテキストにすると X 行数=X 営業日目になる。
valueエラー が起きているセルなどを検出できます。
IsEmpty
IsNothing
※Is Nothing の方が少し動作が速いが無視できるレベル
IsNothing 関数は値型の変数に対しても使えるのに対し
Is Nothing は値型の変数に対して使用するとビルドエラーになります
UiPath 入門編 4 繰り返し処理について - Automation Lab
UiPath ループ処理まとめ
診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。