待望のPowerAutomateDesktopをインストールして遊ぶ
ついにMicrosoft社の自動化ツール「PowerAutomateDesktop」が無償で登場!エンジニアとして遊ばないわけにはいかないので早速インストールして遊んでみた。
今回はインストール手順の紹介とif文を使った簡単なフローを紹介する。
インストール手順
MicrosoftホームページにてPowerAutomateDesktopをインストールする
ダウンロードサイトは以下。
リンク先のdownloadingより、exeファイルを取得する。


exeファイルのダウンロードが完了したら、実行する。

初期インストール設定を行う
exeを実行するとインストール画面が表示されるので、画面指示に従って進めていく。
「次へ」をクリック。

「[インストール]を選択すると、Microsoftの使用条件に同意したことになります」にチェックを入れて「インストール」をクリック。

問題なくインストールが成功したら、「閉じる」をクリック

続いてMicrosoft Power Automate Desktopへのサインインが求められるので、自身が持っているMicrosoftアカウントでサインインを行う。なければ新規作成する。



ようこそ画面が表示されるので、適切な国/地域を選択して「開始する」をクリック。

フロー作成初期画面が表示されたらインストールは無事完了である。

if文を使った簡単なフロー
続いて、if文を使った簡単なフローを作成する。今回は以下のようなものを作る。
- 入力ボックスに入力された内容をtwitterへツイートする
- 入力ボックスで「OK」ボタンがクリックされた場合はツイート処理へ向かう
- 入力ボックスで「cancel」ボタンがクリックされた場合は処理中止のメッセージボックスを表示する
完成形は以下のような形。

では作り方を解説していく。
新しいフローを作る
「新しいフロー」をクリックする。

フロー名を入力し「作成」をクリック

フロー編集画面に移ればOK。

各アクションをドラッグ&ドロップし追加編集していく
①「アクションの検索」に「入力」と入力し「入力ダイアログを表示」をドラッグ&ドロップ

②「入力ダイアログを表示」で各種パラメータの選択が求められるので、自身の好みに応じて設定し保存する。ここでは入力の種類を複数行としている。

ここでUserInputとButtonPressedという2つの変数が生成されている。
UserInputは入力ダイアログにユーザーが入力する値(テキスト)の変数である。
ButtonPressedは、入力ダイアログのボタン「OK」「cancel」の押下結果を格納する変数である。
OKボタンがクリックされた場合は「OK」、cancelボタンがクリックされた場合は「cancel」が値(テキスト)として格納される。
③「アクション」-「条件」-「if」をドラッグ&ドロップ

④ifのパラメータ選択画面になるので、最初のオペランドには前述した入力ダイアログのボタン入力結果(OKorCancel)となる変数を、演算子には「と等しい(=)」を、2番目のオペランドには分岐条件として「OK」を入力し保存する。
※OKと入力された場合に後続アクションを実行するようにする



⑤「アクション」-「Webオートメーション」-「新しいChromeを起動する」をifとEndの間にドラッグ&ドロップする
※勿論ブラウザは普段利用している他のブラウザでもOK


⑥新しいChromeを起動するのパラメータ選択画面が開かれるので、初期URLをツイート画面であるhttps://twitter.com/compose/tweetにして保存する。
※「ポップアップダイアログが表示された場合」は何もしないにしておく。ここで閉じるとかにするとツイート画面自体がポップアップダイアログなのでエラーが起きる。

あとここで、後工程のために予めツイート画面を開いておく。
⑦「アクション」-「UIオートメーション」-「フォーム入力」-「ウィンドウ内のテキストフィールドに入力する」をドラッグ&ドロップする

⑧UI要素の設定画面になるので、予めツイート画面を開いておき、入力部分をUI要素として取得する。
まず、テキストボックス欄のプルダウンメニューをクリックし、「新しいUI要素の追加」をクリックする。

予め開いておいたツイート画面に移行し、テキスト入力部分が赤枠で覆われている状態でCtrl+左クリックを押す。
※「追跡セッション」ウィンドウでは左矢印となっているが、誤訳と思われる。

「追跡セッション」ウィンドウにtwitterのテキスト入力部分のUI要素が追加されていることを確認し「完了」をクリックする。「Edit 'テキストをツイート'が取得できていることを確認する。ただし、2021年3月4日現在、UI要素の追加でツイート画面のEditやButtonがうまく取得できず、divやspanという値でしか反応しないことが多い。私のやり方が悪いのかなんらか悪さしているのかは不明だが、UI要素の取得がうまくいかない場合はデスクトップレコーダから取得するほうが速いと思う。

【3/6追記ここから】
普通にWebのリンクをクリックでも行けた。
UI要素のセレクターの編集で求めているUI要素かチェックできるみたい。
ただテキスト入力に関してはやっぱりどこ指定するとUI要素として処理できるのかわからない・・・とりあえずキーの送信でお茶を濁す。

【3/6追記ここまで】
続いて、「入力するテキスト」欄の{x}から変数UserInputを選択して保存する。



⑨「アクション」-「UIオートメーション」-「フォーム入力」-「ウィンドウ内のボタンを押す」をドラッグ&ドロップする。

ウィンドウ内のテキストフィールドに入力すると同様に、UI要素を追加する。(取得過程は割愛)


⑩「アクション」-「Webオートメーション」-「Webブラウザーを閉じる」をドラッグ&ドロップする。

⑪「Webブラウザーを閉じる」のWebブラウザーインスタンスが「新しいChromeを起動する」で生成されたブラウザ用変数と同じ値であることを確認する(ここでは「%Brouser%」

⑫「アクション」-「条件」-「Else」をドラッグ&ドロップする。「Webブラウザーを閉じる」とEndの間(True分岐条件終了後)に入れること。


⑬ElseとEndの間にメッセージボックスをドラッグ&ドロップし内容を定義する。
※ここはCancelボタンがクリックされた場合の動作を定義するだけなのでなくてもいい。ここではツイート中止のメッセージを表示するためメッセージボックスを入れる。


以上でフロー作成は終了である。
作成したフローの動作をテストする
作成したフローをテストする。中央上部にある「実行」ボタンを押すとフローが進む。

実行すると、最初に定義した入力ダイアログが表示されるので、適当にツイート内容を入力してOKをクリックする。(True分岐の確認)

OKボタンクリック後、GoogleChromeが立ち上がり勝手にツイッター画面が表示され、前述の入力ダイアログで入力した内容が貼り付けられる。

自動でツイートが行われ、ブラウザは閉じられる(処理終了)

入力ダイアログ画面でcancelボタンを押すと、ツイートを中止した旨メッセージが表示される。(Else分岐の確認)

PowerAutomateDesktopを使った感想/評価
RPAツールはUiPathぐらいしか他に使ったことはないが、非常にわかりやすく使いやすいと思う。ただプログラム未経験者がバンバン利用するには、UI要素追加のように一部分かりづらいところがあるのでサポートが大変かも(とっつきやすいだけに)
トリガー/スケジューラ実行やPowerAutomateとの連携が無償でできないのは残念だが、それほど高価というわけでもない。
かつてSlackのシェアをTEAMSが奪ったように、UiPathなどの市場をPowerAutomateが奪っていくのは全然あり得る話だと思う・・・。
コメント