初めてRPAツールを触る方や基本的なプログラミング学習向けに、Power Automate Desktop(PAD)の条件アクション(〇〇の場合)について解説しています。ご自身の環境で動作可能なフローのテンプレートも交えて説明していますので、Power Automate Desktopを使った自動化フローを作る際の参考にしてみてください。
マイクロソフトの無償RPA(自動化ツール)である「Power Automate Desktop(PAD)」での条件アクション(分岐処理)の使い方について解説しています。
繰り返し処理と並び自動化のフローには欠かせない条件分岐。画面の状態によって次の処理を変えたり、読み取ったデータの内容によって異なる処理をさせたりと、分岐の方法もさまざまです。
Power Automate Desktopでは、繰り返し処理を行うためのアクションとして代表的な「If」、「Else」、「Case」、「Switch」などのアクションのほか、RPA(自動化ツール)ならではの「画像が存在する場合」「テキストが画面に表示される場合」「ファイルが存在する場合」などといったPCの状態をより簡単に判定できる条件分岐なども用意されており、さまざまな使い分けが可能です。
ここではPower Automate Desktopならではの条件アクションの設定方法についてご紹介します。
無料自動化ツールの「Microsoft Power Automate Desktop」について、そもそもの解説や導入方法についてはPower Automate Desktopについてをお読みいただくと基本的な使い方などが確認できます。
Power Automate Desktopの分岐処理
Power Automate Desktopでは、条件分岐を行うためのアクションとして、以下の15種類のアクションが用意されています。
- Webページに次が含まれる場合
- ウィンドウが次を含む場合
- サービスが次の場合
- テキストが画面に表示される場合(OCR)
- ファイルが存在する場合
- フォルダーが存在する場合
- プロセスが次の場合
- 画像が存在する場合
- ウィンドウが次の条件を満たす場合
- Case
- Default case
- Else
- Else if
- If
- Switch
この「条件」カテゴリに含まれる15種類のアクションには汎用的な条件アクションのほか、さまざまな判定条件を指定するものや条件と組み合わせて分岐を制御するためのアクションがあります。
このうち、「Case」「Default case」「Else」「Else if」「If」「Switch」のアクションについては基本的な条件アクションの使い方として「条件(If、Switch)アクションの使い方。基本的な条件分岐の作り方と使い分け、サンプル紹介」でご紹介していますのでそちらをご参照ください。
ここでは、その他の「〇〇の場合」のアクションについて以下より解説します。
各条件アクションの機能と設定方法
Power Automate Desktopの条件アクションのうち、「〇〇の場合」の条件処理を作る9種類のアクションの機能や設定方法について解説します。
Webページに次が含まれる場合
「Webページに次が含まれる場合」アクションは、特定のテキストやUI要素がWebページに含まれているかどうかを判定し、条件分岐を行うアクションです。
「Webページに次が含まれる場合」アクションの設定項目は以下のようになっています。
[Webブラウザー インスタンス]:対象となるWebページが読み込まれているWebブラウザーインスタンスを指定します。
[Webページを確認する]:判定の対象となる要素を指定します。「(UI)要素を含む」「(UI)要素を含まない」「テキストを含む」「テキストを含まない」のいずれかを選択することができます。
[UI要素]:前項で指定した要素の内容を指定します。この内容が条件と一致した場合、条件一致(真)となりアクションが実行されます。
このアクションではWebブラウザーの表示内容を使って判定を行うため、動作させるにはこのアクションより前にWebブラウザーインスタンスが作られている必要があります。
Webブラウザーインスタンスは、「新しいMicrosoft Edgeを起動する」アクションなどを使って起動、接続したEdgeやChromeのウィンドウ(タブ)で表示されたブラウザーの変数です。(通常の場合%Browser%
変数などに格納されます)
サンプル:スクリーンショット
サンプル:Robinソースコード
WebAutomation.LaunchEdge Url: $'''https://cravelweb.com''' WindowState: WebAutomation.BrowserWindowState.Normal ClearCache: False ClearCookies: False BrowserInstance=> Browser
SET PadTxt TO $'''Power Automate Desktop'''
IF (WebAutomation.WebPageContainsText BrowserInstance: Browser Text: PadTxt) THEN
Display.ShowMessage Title: $'''PADの話題があるかも?''' Message: $'''%PadTxt%
の文字列が見つかりました。''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed
ELSE
Display.ShowMessage Title: $'''PADの話題があるかも?''' Message: $'''%PadTxt%
の文字列は見つかりませんでした。''' Icon: Display.Icon.None Buttons: Display.Buttons.OK DefaultButton: Display.DefaultButton.Button1 IsTopMost: False ButtonPressed=> ButtonPressed
END
ウィンドウが次を含む場合
「ウィンドウが次を含む場合」アクションは、特定のテキストやUI要素がウィンドウ(アプリケーション)に含まれているかどうかを判定し、条件分岐を行うアクションです。
「ウィンドウが次を含む場合」アクションの設定項目は以下のようになっています。
[ウィンドウが次の条件を満たすかどうかを確認する]:判定の対象となる要素を指定します。「UI 要素を含む」「UI 要素を含まない」「テキストを含む」「テキストを含まない」のいずれかを選択することができます。
[UI要素の状態を確認する]:有効にすると [状態] セレクトボックスが追加され、UI要素の状態を判定に加えることができます。
[UI要素]:判定の対象となる要素(UI要素。テキスト)を指定します。
[状態]:UI要素が含まれているかどうかだけでなく、そのUI要素が有効になっているかどうかを判定します。この設定を使うことでUI要素が存在するかどうかだけでなく、テキストボックスに入力ができる状態か、上書き保存ボタンがクリックできる状態か(グレーアウトしていないか)など、UIの状態を判定に加えることができます。
[状態] を指定した場合、要素の有無の判定と状態の判定の双方が条件を満たしたときにだけ条件アクションが一致(真)と判定されます。
サービスが次の場合
「サービスが次の場合」アクションは、PCのサービスの状態を判定し、条件分岐を行うアクションです。
「サービス」とは、バックグラウンドで動作するWindows の基本動作などに影響するプログラムで、ユーザーの意思で自動設定に指定したアプリケーション(常駐アプリ)などとは異なり、特定のソフトウェアの動作や機能を提供するためにシステムが自動的に動作の切り替えなどを行っています。
ユーザーが手動で起動する一般的なアプリが実行されているかどうかを判定するには「プロセスが次の場合」アクションを使用します。
「サービスが次の場合」アクションの設定項目は以下のようになっています。
[サービスが次の場合]:サービスの状態を「実行中」「停止中」「インストールされています」「インストールされていません」「一時停止」のいずれかで指定できます。
[サービス名]:対象のサービスを指定します。PCにインストールされているサービスをドロップダウンリストから指定できるほか、文字列や変数でプロセス名を指定することも可能です。
[サービス名] はプロセス名、プロセスの説明いずれも検索対象となっているようです。
PCでどのようなサービスがインストール、実行されているかはタスクマネージャなどから確認可能です。
(Ctrlキー + Shiftキー + Escキー → 「タスクマネージャ」→ [サービス] タブ)
テキストが画面に表示される場合(OCR)
「テキストが画面に表示される場合(OCR)」アクションは、指定されたテキスト(文字情報)が画面に表示されているかどうかを判定し、条件分岐を行うアクションです。
テキストはOCR(光学文字認識)機能が使用されるため、画像として表示された文字情報も判定する事ができますが、動作させるOCRエンジンの事前設定が必要となります。
こちらのアクションは主に画像データ(手書きでスキャンした書類など)を読み取って判定する際などに利用されます。
画面上のテキストデータを読み取る場合は「ウィンドウが次を含む場合」を使用します。
「テキストが画面に表示される場合(OCR)」アクションの設定項目は以下のようになっています。
[テキストが次の場合]:対象のテキストが「存在する」か「存在しない」のいずれかを指定できます。
[OCRエンジン]:使用するOCRエンジン(変数)を指定します。
[検索するテキスト]:検索するテキストを指定します。
[正規表現]:有効にすると、[検索するテキスト] を正規表現として解釈し判定されます。
[テキストの検索先]:テキストの検索対象を「画面全体」「フォアグラウンドウィンドウ」のいずれかに指定できます。
[検索モード]:検索を行う領域を指定することができます。「指定されたすべてのソース」「特定のサブ領域のみ」「画面に対するサブ領域の相対値」を指定することができます。
スキャンした画像、帳票類を画面の一部分に表示して文字認識を行うような場合、[検索モード] を変更することで読み取りの対象とする画面領域を座標指定で限定したり、画像要素を使ってその画像のみを認識対象に指定することが可能です。
ファイルが存在する場合
「ファイルが存在する場合」アクションは、ファイルが存在するかどうかを判定し、条件分岐を行うアクションです。
「ファイルが存在する場合」アクションの設定項目は以下のようになっています。
[ファイルが次の場合]:「存在する」「存在しない」のいずれかを指定できます。
[ファイルパス]:判定対象のファイル名を指定します。変数もしくは直接文字列で指定することができ、ファイルを開くダイアログから直接ファイルを選択することで自動的にファイル名のパスが文字列として入力されます。
フォルダーが存在する場合
「フォルダーが存在する場合」アクションは、フォルダーが存在するかどうかを判定し、条件分岐を行うアクションです。
「フォルダーが存在する場合」アクションの設定項目は以下のようになっています。
[フォルダーが次の場合]:「存在する」「存在しない」のいずれかを指定できます。
[フォルダーパス]:判定対象のフォルダー名を指定します。変数もしくは直接文字列で指定することができ、フォルダーを開くダイアログから指定することで自動的にフォルダーのパスが文字列として入力されます。
プロセスが次の場合
「プロセスが次の場合」アクションはプロセスの実行状態を判定し、条件分岐を行うアクションです。
「プロセスが次の場合」アクションの設定項目は以下のようになっています。
[プロセスが次の場合]:「実行されている」「実行されていない」のいずれかを指定できます。
[プロセス名]:判定対象のプロセス名を指定します。PCで現在実行されているプロセスをドロップダウンリストから指定できるほか、文字列や変数でプロセス名を指定することも可能です。
ここで指定できる [プロセス名] は、タスクマネージャの表示名(説明)ではなく実行ファイル(*.exe)の名前(拡張子なし)の文字列が検索対象となっているようです。
プロセス名を確認するにはタスクマネージャを開き、[プロセス] タブをクリック。一覧の見出しを右クリックし [プロセス名] をクリックすると一覧に表示が追加されます。
画像が存在する場合
「画像が存在する場合」アクションは画面上の画像の有無を判定し、条件分岐を行うアクションです。
「画像が存在する場合」アクションの設定項目は以下のようになっています。
[画像が存在する場合]:「存在します」「存在しません」のいずれかを指定できます。
[画像の検索先]:「画面全体」「フォアグラウンド ウィンドウのみ」のいずれかを指定できます。
[検索モード]:「画面全体またはフォアグラウンドウィンドウを検索します」「画面またはフォアグラウンドウィンドウの指定されたサブ領域を検索します」のいずれかを指定できます。
[リストにある画像をすべて検索する]:有効にすると、指定した複数の画像のすべてが存在する場合にのみアクションの判定が一致(真)となります。
[許容値]:最初に選択した画像に一致するまで何回検索を繰り返すかを指定します。
ウィンドウが次の条件を満たす場合
「ウィンドウが次の条件を満たす場合」ウィンドウが開いているかどうか、フォアグラウンドであるかどうかなどの状態を判定し、条件分岐を行うアクションです。
「ウィンドウが次の条件を満たす場合」アクションの設定項目は以下のようになっています。
[ウィンドウの取得]:「ウィンドウのUI要素ごと」「ウィンドウのインスタンス/ハンドルごと」「タイトルやクラスごと」のいずれかを選択できます。
[ウィンドウ]:前項で指定した対象のとなる要素を指定します。
[ウィンドウが次の条件を満たすかどうかを確認する]:「開いている」「開いていない」「フォーカスあり」「フォーカスなし」
「ウィンドウのインスタンス/ハンドルごと」を指定した場合、既存のウィンドウインスタンスの内容を使って判定を行うため、動作させるにはこのアクションより前にウィンドウブラウザーインスタンスが作られている必要があります。
ウィンドウのインスタンスは、「ウィンドウを取得」アクションなどを使って接続したウィンドウの変数です。(通常の場合%AutomationWindow%
変数などに格納されます)
まとめ
Power Automate Desktopでの条件アクションについて解説しました。
今回ご紹介した「〇〇の場合」アクションは、一般的なプログラム、スクリプトでは取得や判定に手間のかかるウィンドウの要素の内容や状態を非常に簡単に取得、判定を行うことができるPower Automate Desktopならではの機能となっています。
ウィンドウの表示や状態はアクションを実施する手順などにより変わるだけでなく、時間の経過、処理速度などの影響などによっても変化することがあります。
これらの状況を正しく処理できずにフローがエラーで停止してしまったり、意図とは異なる動作をしたりすることも多くあると思いますが、今回の条件アクションを適切なタイミングで利用することでエラーや誤動作の発生を抑制し、より確実な自動化フローを組み立てることもできます。
基本的な「If」「Switch」条件アクションの使い方と合わせて、これらの条件アクションを使った自動化フローの作成にもチャレンジしてみてください。
クラベルではほかにもテンプレートとして使えるPower Automate Desktopのフローサンプルを解説付きでご紹介していますのでぜひ参考にしてみてください。
お読みくださりありがとうございました。今回の内容が少しでもお役に立てば幸いです。
コメント