Power Automate for Desktop:テキストに基づく取得で劇的に高速化

 長年、遅くて悩まされていたPower Automate for Desktopのフローが、「テキストに基づく取得」を使用したところ、劇的ビフォーアフターで高速になりました。


テキストに基づく取得のサンプル

1. 「Loop」アクションを追加し、1から5まで1ステップずつ増加します。

2. 「ウィンドウのUI要素をクリック」アクションを追加します。

3. UI要素を選択し、UI要素の追加を選択します。

4. 電卓の数字ボタンを右クリックし、「テキストに基づく取得」をクリックします。

5. 「テキスト値」をクリックし、「{X}」をクリックし、変数「LoopIndex」を選択

6. 「テキスト値」に変数LoopIndexが入力されます。

7. 作成されたUI要素を確認すると、次の通りButton'5'の要素の「Name」にLoopIndexが指定されているのがわかります。

8. フローは次のようになっています。

9. フローを実行すると、UI要素のLoopIndexは、1から5へと次々と変わり、結果的に1から5のボタンがクリックされることになります。


実例

アプリの請求書一覧から、次々と請求書を選択して入金するという業務フローがありました。これが請求書の選択処理にやたら時間がかかり悩みの種でした。

これまでのフローは次のように、請求書リストを順番に見て行って、対象の請求書番号が見つかったら処理するというものでした。

遅い原因は、請求書一覧から一件一件要素の請求書番号を読み取る事でした。Power Automate for Desktopは、画面の情報を読み取るのがやたら遅いので、この処理を何度もやったら遅くなるのは当然でした。

今回、テキストに基づく取得が使えることが分かったので、請求書番号を使ってPower Automate for Desktopが自分自身で直接UI要素を参照するようにフローを作り替えたところ、次のように劇的ビフォーアフターでシンプルになりました。

その結果、速度も劇的に速くなりました。


よく考えてみると

ただ、よく考えてみると、UI要素に変数を指定して、動的に要素を指定するという事は以前からやっていたので、もしかしたら、この機能を使わなくてもできたんじゃないかという気がしています。

テキストに基づく取得を使うと、より簡単にそれができるという事なのかもしれません。


試しに、通常通りキャプチャーした要素は次の通りです。

属性の指定がたくさんしてあり、Name属性は指定されていません。

そして、テキストに基づく取得を使った要素は次の通りです。

属性は指定はNameのみと非常にシンプルです。


試しに、普通にキャプチャーしたName属性にLoopIndexを指定したところ、同じ動きをしました。(Id="num5Botton"の指定は解除しました。これが残っていると動作しないはずなので)


というわけで、本当はとっくの昔に高速化出来ていたけれど、テキストに基づく取得によって、それに気が付くことができた、という事でした。


コメント

アクセス数の多い投稿

セキュリティ対策ソフトのノートンが詐欺ソフトまがいになってしまってショック

ZIPファイルを開こうとすると、展開を完了できません、と言われる

Excel 2019 クエリが原因で日本語入力の一文字目が勝手に確定する

Excelのテーブルに行や列を挿入する際のエラー

オカムラ家具のOAチェアー、コンテッサを分解清掃

突然滅茶苦茶遅くなったPCがWindows Updateのキャッシュクリアで復活

ChatGPTが日本語からVBAのコードを生成できてたまげる

Windows セキュリティーのビックリマークが消えない

Power Automate Desktopでブラウザでダウンロードしたファイルを処理する

Excel VBAからODBCを使ってデータを簡単に取得する