Power Autoamte外からのフロー呼び出しが可能に
先日のPower Automate for desktop(PAD)のバージョンアップにより、待望のPAD外からのフロー呼び出しが可能になりました。
Power Automate for desktop – June 2022 updat
つまり、ExcelのVBAから呼び出したり、自作プログラムから呼び出したり、デスクトップに置いたショートカットから呼び出したりすることができるようになりました。
有償ライセンスが必要
残念ながら誰でもこの機能を使えるわけではなく、有償ライセンスを契約している方だけです。
Power Automate 価格
私は「アテンド型 RPA のユーザーごとのプラン」を契約しているため利用可能です。
知らないうちに、一回の実行ごとに課金される従量制プランも用意されています。これでも使えるのか不明です。
呼び出しにはURLを使う
呼び出す方法はURLを使ったものでした。
Run desktop flows via URL
ブラウザから呼び出すこともできるし、シェルから呼び出すこともできます。
基本的な方法は次のページで詳しく解説されています。
[Power Automate for desktop]URL経由でデスクトップフローを実行する
実際の実行方法についてはこちらのページが良いでしょう。
外部リンク機能を使用した Power Automate for desktop のフローの様々な実行方法を試してみる
VBAからの呼び出し
というわけで、今回はVBAからシェルを使って呼び出してみました。
'フローIDを使ってPower Automateのフローを実行する
Public Sub uInvokePowerAutomate()
Const uID As String = "ここにはフローIDを指定する"
uRunPowerAutomate uID
End Sub
'指定されたフローをPower Automateで実行
'参照設定 Windows Script Host Object Model
Public Sub uRunPowerAutomate(ByVal uFlowID As String)
Const uEnvID As String = "ここには環境IDを指定する"
Dim uURL As String
Dim uWS As WshShell
uURL = "ms-powerautomate:/console/flow/run?environmentId=" & uEnvID
uURL = uURL & "&workflowId=" & uFlowID
Set uWS = New WshShell
uWS.Run uURL
End Sub
WshShellオブジェクトを扱うには、参照設定で、Windows Script Host Object Modelを指定しておく必要があります。(指定せずにCreateObjectを使っても良いです)
あとはワークシート上に設置したボタン等で、上のプロシージャーuInvokePowerAutomateを指定するだけです。
環境IDについては、Default- をIDの頭につけないと、実行できませんでした。
使ってみると
これで、今までいちいちPower Automateのコンソールから実行していたフローを、Excelからボタンクリックで簡単に呼び出すことができるようになりました。
それくらいと思われるかもしれませんが、実際に使ってみると結構便利だという事がわかってきました。
なぜかPADはデフォルトのフローの並び順が編集時間順で、名前順ではありません。また、デフォルトのソート順を変える方法も見当たりません。
そのため、PADを起動する、並び替える、フローを見つける、フロー実行、という手順が必要でした。
なにげに、並び替えとフローを見つけるというのが煩雑で、時には違うフローを実行してしまう時もありました。
Excelのボタンに貼り付けたり、デスクトップにショートカットを用意することにより、迷いなく実行できるようになりました。
また、Power Automateを知らない方でもスムーズに実行できます。
追記: 最近は、コンソールの検索機能を使ってフローを絞り込み、それから実行しています。これでもコンソール起動と検索の手間があるので、業務で使うエクセルシートからボタンを押すだけで呼び出せた方が断然簡単です。
日常使うフローはほぼExcelとデスクトップに配置したので、最近は、ほとんどコンソールを開かなくなりました。
2022年6月のアップデートによって、URL経由でPower Automate for desktop(PAD)のフローを実行できるようになりました(バージョン 2.21 以降)。
Desktop flows can now be triggered via an external link
Premium users that are signed into Power Automate for desktop can now trigger a desktop flow through its console run URL. With this new feature, users can run desktop flows outside the console and without opening it at all.
//powerautomate.microsoft.com/en-us/blog/power-automate-for-desktop-june-2022-update/ より
ただし実行するには有償ライセンスが必要で(試用版は可)、広く使われている無償のMicrosoft アカウント環境では実行できません。
フローを実行するURLの形式
URLからフローを実行するには、下記のように「ms-powerautomate:」URIスキームで環境IDやフロー名、フローIDを指定する必要があります。
たとえば環境IDが「XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX」、フロー名が「リンクから実行するフロー」のフローを実行する場合、指定するURLは下記のようになります。
ms-powerautomate:/console/flow/run?environmentId=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX&workflowName=%e3%83%aa%e3%83%b3%e3%82%af%e3%81%8b%e3%82%89%e5%ae%9f%e8%a1%8c%e3%81%99%e3%82%8b%e3%83%95%e3%83%ad%e3%83%bc上記の通りフロー名はURLエンコードして指定します。
例の上2つのように環境IDを指定しない場合は、コンソールで選択中の環境で実行されます。
また、URLで指定した環境とは別の環境がコンソールで開かれている場合、自動的に環境が切り替わるはずなのですが、私が試した限りでは下図のエラーが発生し、上手く実行できませんでした。
URL経由でフローを実行する際は、あらかじめコンソールで実行する環境を開いておいた方が無難だと思います。
環境IDやフローIDの調べ方
環境IDやフローIDはPower Automateからフローを開けば、アドレスから取得できます。
2022/7/5 追記:
フローIDやフロー名、環境IDを取得して実行用URLを生成する簡単なスクリプトを作成しました。
2022.07.05
前回の記事で、URL経由でPower Automate for desktop(PAD)のフローが実行できることを紹介しましたが、フローIDやURLエンコードされたフロー名の指定が必要になります。 これらの値を調べるために毎回Power Auto...
もしくは下記レジストリの値を設定することでも表示・非表示を指定できますが、私が試した限りでは一度コンソールを再起動しないと反映されませんでした。
(「EnableAskBeforeRunningAFlowExternally」の値が「0」でダイアログ非表示、「1」で表示)