複数のフローを小分けにして分岐する
メインフローとは別にサブフローを作って、Mainの中で条件分岐することで全体の見通しをよくすることが出来ます。
ウインドウに対して複雑なキー操作を送信する
パスワード文字列などを入力するときはちょっと独特なテキスト形式で設定します。
https://docs.microsoft.com/ja-jp/power-automate/desktop-flows/actions-reference/mouseandkeyboard#sendkeys にもキーの一覧があるのですがぱっと見分かりにくいと思うので代表的なキー設定の例を下に並べておきます。
- @マーク → {Oem3}
- 大文字Q → {LShiftKey}({Q})
- 小文字x → {x}
- 数字キー2 → {D2}
- エンターキー → {return}
- タブキー → {tab}
ちなみにOEM1~8等の特殊扱いされているキーについては、Windowsの仮想キーコードの一覧などを見た方が対応付けがわかりやすいと思います。
参考 https://bsakatu.net/doc/virtual-key-of-windows/
ウインドウの特定の場所をクリックする
詳細のところを押すと、ウインドウの中での相対位置を指定できます。例えば真ん中にチェックを入れると、ウインドウの上下左右中央からの差分(Xは下方向、Yは右方向)でクリック位置を調整できます。
ウインドウ内部の表示内容から文字を自動的に読み取る (OCR)
OCR機能を使うと、ウインドウの中で並んでいる表示内容から文字列を抽出することが出来ます。
(1) OCRエンジンを作成する
(2) OCRエンジンにテキスト抽出させる
(3) 必要に応じて空白文字などを削除する
(4) 行区切りのリストに変換する
(5) Loopを使って行区切りのリストから必要な行だけ取り出して加工する
上記では、画面上に「1234」と表示された文字列を後で別なウインドウに数字キーとして送信するために、「{D1}{D2}{D3}{D4}」とループしながら1文字ずつ加工している。
※ 正規表現の置換 (Replace) を上手く使おうと思ったのだが、後方参照が出来ないようで苦肉のやり方。
ウインドウに特定の表示が出てくるまで待機する
ボタンを押したりして画面遷移しても一定時間経たないと入力画面が出てこない場合などに待機する場合、秒数指定で待つことも出来るがその場合は不意に処理速度が遅かったり、ネットワーク上で応答待ちになった時に不都合になることが多い。
人間であれば、画面を眺めていて入力できそうになるまで見て判断することが出来るが、Power Automate Desktopでも同様に特定の画像と一致する表がなされるまで待機することが出来る。