Power Automate Desktop のデスクトップフローを Node-RED で実行するメモ

この記事は Node-RED Advent Calendar 2023 の 6 日目の記事です。Power Automate Desktop のデスクトップフローを Node-RED で実行するメモです。

今回の記事の実行状況

以下のような環境で、やってみます。

  • Windows 11 Pro
  • Power Automate Desktop 10.0.8109.0 x64
  • Power Automate にプレミアムユーザーでログインしていること
  • ローカルにインストールした Node-RED 3.1.0

Power Automate Desktop はフローをコマンド実行できる

URL またはデスクトップ ショートカットでデスクトップ フローを実行する – Power Automate | Microsoft Learn

こちらにあるように、Power Automate Desktop はコマンド実行できます。要素として「Power Automate Desktop のパス」「ms-powerautomate:/ ではじまる 環境 ID とタスク名 のURL」が必要なようです。

また Power Automate はプレミアムユーザーでないと、うまく実行が発動しなかったので、ご注意ください。

今回のフロー

今回使う Power Automate Desktop のフローはこちらです。

image

実行してみると、シンプルにメッセージウィンドウが表示されます。

Power Automate Desktop のパス

私の場合は Power Automate Desktop アプリケーションの置き場所が MSI インストールでしたが、

image

このように、はじめは思ったような場所になかったですが、頑張って探しまして、

C:\Program Files\WindowsApps\Microsoft.PowerAutomateDesktop_10.0.8109.0_x64__8wekyb3d8bbwe\PAD.Console.Host.exe

にありました。これ 10.0.8109.0_x64 あとあるので更新されてバージョンが変わってしまうと置き場所が変わるんじゃないかという懸念はありますが、一旦は気にしません。

ms-powerautomate:/ ではじまる 環境 ID とタスク名 のURL

環境 ID については、こちら にあるようにポータルで自分の環境を把握しました。

タスク名は workflowName=[workflowName] という形で呼べるので、今回のフロー名だと test なので ms-powerautomate:/console/flow/run?environmentId=[environmentId]&workflowName=test としました。[environmentId] は、今回実行したい環境 ID になります。

image

そのほかに Power Automate Desktop で手元のアプリで起動して、動かしたフローを選択した状態で、フローのプロパティから「URL を実行」欄をコピーすることでも得られます。

コマンドプロンプトで一度試す

コマンドプロンプトを起動して、一回試します。Node-RED の exec ノードも内部はコマンドプロンプトを実行してるので、ほぼ同様の挙動確認です。

"C:\Program Files\WindowsApps\Microsoft.PowerAutomateDesktop_10.0.8109.0_x64__8wekyb3d8bbwe\PAD.Console.Host.exe" "ms-powerautomate:/console/flow/run?environmentId=[environmentId]&workflowName=test"
このようなコマンドを実行すると、

image

このようにフローが動作しメッセージが表示されました。

ローカルの Node-RED のフロー

では、動かし方ははっきりしたので、ローカルの Node-RED の exec ノードで動かしてみます。

image

このようなフローです。

image

こちらの change ノードは以下のようなプロパティになっています。

image

exec ノードではコマンドを設定していないので、こちらのノードに「コマンドプロンプトで一度試す」で動かしたコマンドを入れておきます。

image

exec ノードは、標準出力・標準エラー出力・返却コードそれぞれに debug ノードをつけています。

image

exec ノードのプロパティは、なにも設定せずに、先ほどお伝えした手前の change ノードのコマンドの内容が入っている msg.payload をそのまま実行する仕組みです。

ローカルの Node-RED で実行してみる

image

inject ノードをクリックして実行してみます。

image

debug ノードはこのように反応しました。

image

無事、さきほどの Power Automate Desktop のデスクトップフローが動きました!

これができると MQTT に反応してローカルの仕組みを動かしたり、inject ノードの定期実行機能で良い感じにスケジュール実行できそうなのです!