カテゴリー
Azure

Power Automate Desktopで自動化してたときのちょっとしたコツをまとめてみる

複数のフローを小分けにして分岐する

メインフローとは別にサブフローを作って、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) 行区切りのリストに変換する

正規表現の\nを使うことで1行ごとに分割したリストに変換している

(5) Loopを使って行区切りのリストから必要な行だけ取り出して加工する

上記では、画面上に「1234」と表示された文字列を後で別なウインドウに数字キーとして送信するために、「{D1}{D2}{D3}{D4}」とループしながら1文字ずつ加工している。
※ 正規表現の置換 (Replace) を上手く使おうと思ったのだが、後方参照が出来ないようで苦肉のやり方。

ウインドウに特定の表示が出てくるまで待機する

ボタンを押したりして画面遷移しても一定時間経たないと入力画面が出てこない場合などに待機する場合、秒数指定で待つことも出来るがその場合は不意に処理速度が遅かったり、ネットワーク上で応答待ちになった時に不都合になることが多い。

人間であれば、画面を眺めていて入力できそうになるまで見て判断することが出来るが、Power Automate Desktopでも同様に特定の画像と一致する表がなされるまで待機することが出来る。

カテゴリー
Azure

Power Automate Desktopをインストールしてみた。

職場または学校アカウントのユーザでPower Automate Desktopをインストールしてみました。すると、Microsoft Dataverseデータベースが見つからないとのメッセージが。

画像

Power Platform管理センター上で環境に対してデータベースを追加してあげないといけないようです。

画像

会社や学校テナントのOffice 365管理者とかPower Platform管理者とかって、情報システム部門の奥底にいたりするので、もしもPower PlatformやDynamics 365を全然使っていない会社や学校でPower Automate Desktopをユーザが使いたくなったとしてもこの追加作業をしてもらうのには敷居があるかもしれないです。

管理者目線ではいろいろとセキュリティやアクセス出来るデータの範囲を設定することが出来そうです。

画像

管理者側でDataverseを追加してから10分くらい位待ってはじめてPower Automate Desktopでデスクトップフローが作成出来るようになりました。

画像

個人的に気になったAWSやAzure周りのアクションは画面キャプチャしたとおりです。そこまで多くないので、AWS CLIとかazコマンドを作った方が明らかに良いです。

画像

とりあえず、週1回やってる定型作業(Azure Portalからコスト一覧をダウンロードするタスク)を自動化してみました。

画像