安定した動作を目指したい人におすすめのUiPathアクティビティ10選&小技5選

この記事は『CRESCO Advent Calendar 2020』17日目の記事です。

皆さんこんにちは!
ビジネスプラットフォームテクノロジーセンター(BPTC)のジョンです。

寒さも少しずつ厳しくなり、本格的な冬の訪れを感じられる頃となりました。
体調にお気をつけください。
今回の記事はUiPathの安定した動作を⽬指したい⼈におすすめのアクティビティ10選&⼩技5選について紹介します。

アクティビティ10選

1.要素が出現したとき(OnUiElementAppear)

・説明
指定した要素が表示された場合のみ、Doシーケンス内のアクティビティを実行する。
・コメント
該当の画面が表示されるまで待機し、指定した要素・画面がちゃんと表示されたら、その要素・画面に対する処理を行うので、安定的なフローになります。
数秒後など出現するまで何秒かかるかわからない要素を捕まえるのに適しています。
必ず出る前提のアプリケーション(ポップアップなど)に対して起動するのを待ってあげて、起動が完了したら「要素が出現したとき(OnUiElementAppear)」アクティビティの中の処理を行う時によく使います。
また、エラーのポップアップ対応で使うことが多いと思います。ただ見つからないとエラーが発生するので、普通は起きえないポップアップ対応などで使う場合は、「エラー発生時に実行を継続」プロパティをOnにするのを推奨します。

※以下のプロパティ設定にご注意!

・主なプロパティ

無限に繰り返す True(デフォルト)に設定した場合、要素が現れると、Doシーケンス内のアクティビティが実行され、それが繰り返されます。
Falseに設定した場合、要素が現れるとDoシーケンス内のアクティビティが1回だけ実行され、次のアクティビティに行きます。
アクティブ化を待つ チェックした場合、Selectorに指定した要素がアクティブになるまで待ちます。
表示されるまで待つ チェックした場合、Selectorに指定した要素が画面上に表示されるまで待ちます。
検出した要素 要素が見つかった場合に、プロパティに設定した要素が変数に格納されます。

2. 要素が消滅したとき(OnUiElementVanish)

・説明
要素が消えるまで待機する処理。
・コメント
要素が消えるまで待機することができます。処理が終了すると要素が消える場合に利用できます。
「処理中」のステータスから完了するまで時間がかかり、完了すると要素が消える処理に活用できると思います。

3. 要素の存在を確認(UiElementExists)

・説明
指定したUI要素の要素の有無を検出する。
・コメント
該当要素の存在有無を確認することで、要素が存在する場合のみ処理を行うようにすることができます。
要素が完全に表示されていないのに次の処理に進めようとする問題を防げます!

4. 要素を探す(Find Element)

・説明
要素が表示されるまで待機。
・コメント
時間指定で待機するようにするアクティビティ「待機(Delay)」というアクティビティがありますが、「待機(Delay)」は該当の要素が表示された場合でも、指定された時間まで待機してしまうので、無駄に待つ時間が発生する時があります。
「要素を探す(Find Element)」アクティビティは指定した要素が出現するまで待つことができ、その要素が出た時点ですぐ次のアクティビティに動作が移るため、固定待機に比べて実行時間が早くなります。
確実に要素が表示されているか確認後次のフローに進めるので、エラー発生率が下がりますので、お勧めです。

※要素の存在を確認(UiElementExists)と要素を探す(Find Element)の使い分け

「要素の存在を確認(UiElementExists)」は要素が存在した場合Trueを、存在していない場合Falseを返すので、リトライスコープに利用できますが、「要素を探す(Find Element)」は利用できません。
一方「要素を探す(Find Element)」には「表示されるまで待つ」プロパティがあるので、画面に存在するけど表示されていない要素を特定する時は「要素を探す(Find Element)」を使用します。

5. プロセスを強制終了(KillProcess)

・説明
プロセスを強制終了する。
・コメント
アプリケーションを終了すると該当のアプリケーションのプロセスも終了されているはずですが、システムの状況によりプロセスが残ってしまい、フローを邪魔することがよくあります。
そういった場合は、そのプロセスを強制終了させることで、エラーやバグを防ぐことができます。

6. スクリーンショットを作成(TakeScreenshot)

・説明
スクリーンショットを撮る。
・コメント
エラーが発生した場合はその時点の画面のスクリーンショットを取得することで、どの状態でエラーが発生したか特定しやすくすることができます。
予期しないシステムエラーが発生した時にはスクリーンショットを取るアクティビティを使うのをお勧めします!

7. ホットキーを押下(Send Hotkey)

・説明
ショートカットやデスクトップ操作などのキー操作を実行する。
・コメント
UiPathでUI操作は安定的に動作しない場合があります。
そういった場合はUI操作を減らして、ホットキーを押下アクティビティを用いて安定的にすることができます。
業務上よく使用する「Ctrl+s」「Ctrl+c」のようなホットキーや「enter」「del」のようなSpecailKeyを該当要素に対して実施してくれる素敵なアクティビティです。

8. スロー(Throw)

・説明
任意のタイミングで例外(エラー)を発生させる。
・コメント
システム的にはエラーではないものの業務的にはエラーとしたい箇所に対し、任意の例外(ビジネス例外)を発生させることができるアクティビティです。
ビジネス例外としてはBusinessRuleExceptionという例外をスローすることが推奨されます。そうすることで、Try Catchとの組み合わせにより、システム例外かビジネス例外かを区別することができ、ビジネス例外時には○○を行う、といったようにエラー発生時の処理を分けることができます。
★再スローとの違い
ほぼ同じ動作をするのですが、役割が異なります。
再スローはトライ キャッチのCatchesフィールド中で、キャッチした例外を再発生させるアクティビティです。

9.リトライスコープ(Retry Scope)

・説明
対象のアクションのあとに想定通りの結果がでるまで対象のアクションを繰り返す。
・コメント
想定できないエラーや実行環境に依存するトラブルなどで、ワークフローが止まってしまう可能性があるときは、
「リトライスコープ」アクティビティを使って、例外が発生しても処理をやり直せるようにしておきます。
※条件に使用できるアクティビティは以下
・要素の有無を検出
・画像の有無を検出
・テキストの有無を確認
・OCRでテキストの有無を確認
・コレクション内での有無
・Is true(WorkFlow Maneger Activitiesパッケージで追加)
・Is false(WorkFlow Maneger Activitiesパッケージで追加)

10.繰り返しをブレーク(Break)

・説明
繰り返し(For Each、While、Do While)処理の現在の繰り返し処理を中断する。
・コメント
繰り返し処理で最後まで回す必要がなかったり、特定の繰り返し処理を飛ばしたかったりする場合があります。
そのような場合使うのが「繰り返しをブレーク(Break)」になります。
例えば【10000個のデータから特定の条件を満たすデータを1つだけ見つける】というフローがあるとします。
このフローで3000個目に条件を満たすデータを見つけたので、残りの7000個のデータは見る必要がないという場合、
データを見つけた時点で繰り返し処理から抜けるようにフローを組んでおけば、残りのデータを調べずに済みます。

小技

1.お手軽にワークフローをファイル分割する方法

・フローチャートやシーケンスの中に作成されている処理を丸ごと全部、部品(別xamlファイル)にすることができます。
xamlファイルを新しく作成して、そこに処理をコピペするような作業をしなくても済むのです!

①ファイル分割したいアクティビティを右クリックし、「ワークフローとして抽出」をクリック。

②名前欄には作成したいxamlファイル名を入力、場所欄には作成したいxamlファイルの場所を入力後、「作成」ボタンを押下

③プロジェクトパネルに入力したフォルダー「共通部品」に「XXXX処理.xaml」ファイルが作成できたことが確認できます!

2.お手軽にアクティビティをTryCatchで囲む方法

・アクティビティを簡単にTryCatch化にすることができます。
TryCatchアクティビティをアクティビティパネルから持ってきて、そこに処理をコピペするような作業をしなくても済むのです!

①TryCatch化したいアクティビティを右クリックし、「トライ キャッチを使用して囲む(CTRL + T)」をクリック。

②TryCatch化ができました。
※エラーになっている理由は、Catchにエラーハンドリングが入っていないからなので、適切なエラーハンドリング処理を入れましょう。

3.Excelの動作を非表示にする

・「Excel アプリケーション スコープ」でエクセル作業「読み込み」や「書き込み」などの操作を画面に表示しないようにする方法です。
大量のデータを書き込む・編集するなど、処理が多い場合に毎回エクセルを画面に表示したり閉じたりするとどんどん負担がかかりエラーが発生しやすくなります。
そのようなときにエクセル処理を表示しないことで、安定的になります。
ただ、ロボットが今何をしているか見えないので、処理がどこまで進んでいるか分からなかったり、エラーが起きても原因を特定しにくかったりするというデメリットもあります。
ロボットの処理が見えなくてもいい場合や確実に動作する場合など、エクセル動作を非表示にすると処理速度もはやくなるし、安定的になるのでいいと思います。

4.「キー入力間の待機時間(DelayBetweenKeys)」の調整

・「文字を入力(TypeInto)」での文字入力処理が安定しないことが分かった場合は、「キー入力間の待機時間(DelayBetweenKeys)」(規定値は10ミリ秒)を調整することで安定的に動作するようになります。
文字を入力する速度が速すぎて文字の前後が変わってしまうことがあります。そのような時には「キー入力間の待機時間(DelayBetweenKeys)」を長く設定します。
また、短くする設定することで高速化に寄与することもできます。

5.「アクティビティの待ち時間」を調整

・「クリック(click)」でのクリック処理を行う時にクリックタイミングが早すぎたりして、安定しないことが分かった場合は、
「実行前の待機時間」(規定値は200ミリ秒)を調整することで安定的に動作するようになります。
実行前の待機時間を長く設定することで安定的にクリックできることがありますので、クリック処理が安定しない場合は待機時間を調整しましょう。
また、確実に早くおわると分かっている操作に対しては、時間を短く設定することでフローの高速化が見込めます。
同じ処理を繰り返し行っている処理に有効だとおもいます!

以上、安定した動作を目指したい人におすすめのアクティビティ10選&小技でした。
より安定的で不具合の少ないロボットを作成しましょう。

  • このエントリーをはてなブックマークに追加

クレスコのRPAセミナー

クレスコではAIやRPAをテーマとした技術セミナーを定期的に開催しています。現役エンジニアが実践的なノウハウを提供します。ぜひご活用ください。

◆受講者の声
[無料セミナー]RPA導入ファーストステップ
「UiPathのデモ、各ツールの比較が分かりやすく有益と感じた。」
「RPA導入で種々の問題点があるので、”つまずき”の部分が参考になった。」

[オーダー研修]RPA/UiPathハンズオン
「今まで迷ったところや分からなかったところがすべて判明した爽快感がありました。もっと早く受けたかったです。」
「RPA導入新任者向け研修として最適。今後、当社のRPA開発者向け研修として活用させていただく事を検討します。」


クレスコのRPAセミナーを詳しく見る