アプリケーションのボタンをクリックする等の操作をPower Automate for desktop(PAD)で行う際、対象となるアプリケーションが複数起動していると意図した通りにフローが動かない場合があります。
例えば下図のフローでは「アプリケーションの実行」アクションで同じアプリケーションを2つ同時に起動し、それぞれで追加したUI要素「Button ‘Button’」と「Button ‘Button’ 2」をクリックする処理を行いますが、異なるUI要素を指定しているにも関わらず、同じボタンがクリックされます。
原因はUI要素のセレクターを見ると一目瞭然で、どちらのボタンも親要素が同じでセレクターも全く同じ内容となっているため、ボタンの識別ができずに同じボタンをクリックする結果となったことが分かります。
意図した通りにフローを実行するには、操作対象となるUI要素の“親ウィンドウ”を識別する必要があるのですが、このような場合に使えるのがUI要素の「ProcessId」(プロセスID)プロパティです。
プロセスIDとは、文字通りプロセス(アプリケーション)を識別するための一意のIDで、PADでは「アプリケーションの実行」アクションの“生成された変数”として取得できます。
プロセスIDで親ウィンドウを識別する方法
下記記事でも紹介している通り、PADではセレクターで変数が使えます。
そこで、プロセスIDを格納するための変数(%TargetProcessId%)を用意し、親ウィンドウのセレクターに下記のように「ProcessId」を追加することで、任意のタイミングで変数の値を変更し、操作対象となる親ウィンドウを切り替えることができます。
:desktop > window[Name="Contoso Invoicing"][Process="LegacyInvoicingApp"][ProcessId="%TargetProcessId%"]
実際のフローの実行画面が下図になります。
同じアプリの操作を同時に自動化する機会も少ないかもしれませんが、ウィンドウの指定にプロセスIDが活用できることだけでも覚えておくと、いつか活用する機会に出会えるかもしれません。
この記事へのコメントはありません。