LoginSignup
14
5

More than 1 year has passed since last update.

Power Automate のデスクトップフローを Web API から操作する

Last updated at Posted at 2023-02-02

はじめに

Power Automate for desktop と呼ばれる、Power Automate のデスクトップフローは、通常は Power Automate ポータルからフローを管理しますが、

Web API により、UIを使用せずにフローを管理/トリガーすることが可能です。

その方法について、Postman による実行手順をまとめました。

詳細は、以下の Power Automate blog に記載があります。
(記載された手順では動作しない部分が数ヶ所ありますので、設定方法は当記事をご参考ください)

注意

本機能を利用する場合、Power Automate のアテンド型 RPA のユーザーごとのプラン が必要です。

Web API によるデスクトップフローの管理について

Web API で、デスクトップフローに対して実行できるアクションは以下です

  1. 使用可能なデスクトップフローを一覧表示する ←
  2. デスクトップフローのスキーマを取得する
  3. デスクトップフロー実行の状態を取得する ←
  4. デスクトップフロー出力の取得
  5. デスクトップフローの実行をトリガーする ←
  6. デスクトップフローの実行を取り消す

当記事では、「←」を付けたものを記載しています。

1.Microsoft Dataverse で OAuth 認証を使用する

Web API でのデスクトップフロー実行は、Dataverse 認証を利用します。
Dataverse での認証は、Azure AD テナントにアプリケーション登録を行う必要があります。

1-1. Azure portal にサインインし、アプリの登録に移動 ⇒ [+新規登録]。

image.png

1-2. 以下項目を設定し、[登録]ボタンを押下します。

image.png
① 名前:任意
② 任意の組織ディレクトリ内のアカウント (任意の Azure AD ディレクトリ - マルチテナント) を選択
③ リダイレクトURL:「Web」を選択し、任意の URL ← 後ほど利用するので覚えておきます

1-3. アプリが登録されたら、「概要」メニューで表示される、アプリケーション(クライアント)ID の値をコピーしておきます。

image.png

1-4. 「認証」メニューに移動し、「暗黙的な許可およびハイブリッド フロー」にある、[アクセス トークン (暗黙的なフローに使用)]をチェックし[保存]します。

image.png
また、1-2. の ③ で設定したリダイレクトURL もこの画面で表示されることを覚えておいてください。

1-5. 「APIのアクセス許可」メニューから Dataverse にアクセス許可を追加します。

image.png

① [APIのアクセス許可] を選択し、[+アクセス許可の追加] を選択します
② [所属している組織で使用している API] を選択し、Dataverse を選びます("Dataverse"で検索すると見つけやすいです)
③ 「user_impersonation」をチェックし、[アクセス許可の追加] を押下します
image.png

2.Postman で認証

2-1. Postman をインストールします。

2-2. Postman で、[Enviroments] ⇒ [+] ⇒ [New Environment]を選択し、任意の名前を付けます。

image.png

2-3. 環境変数を設定し、[Save]後、画面右上の環境ドロップダウンでActiveな環境として選択します。

{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

VARIABLE INITAL VALUE
url https://< 組織名(※下記) >.dynamics.com (例:https://orgXXXXXX.api.crm7.dynamics.com)
clientid <1-3. で取得したアプリケーション(クライアント)ID の値 >
version 9.2
webapiurl {{url}}/api/data/v{{version}}/
callback <1-2. ③で設定したリダイレクトURL>
authurl https://login.microsoftonline.com/common/oauth2/authorize?resource={{url}}

※ 組織名の調べ方
Power Apps ポータルにサインインし、右上歯車メニュー ⇒ [開発者リソース]
image.png

「Web API エンドポイント」のURLのうち、orgXXXXXX.api.crmX の値になります。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

2-4. 以下手順に従い、環境で使用するアクセストークンの生成します

① 2-2. ~ 2-3. で作成した Environment のすぐ横にある + をクリックします。
image.png

② 表示された「Untitled Request」で、「Authentication」タブを選択し、「Type」を [OAuth 2.0]に、「Add authorization data to」を [Request Headers]に設定します。
image.png

③ 「Configure New Token」 で[Configuration Options]タブを選択し、以下の値を設定し、[Get New Access Token]ボタンを押下します。
image.png

Name VALUE
Callback URL {{callback}}
Auth URL {{authurl}}
Client ID {{clientid}}

④ Azure Active Directory のサインインダイアログボックスが表示されるので、サインインし認証を完了すると次のダイアログが表示されます。
image.png

⑤ 「Manage Access Tokens」ウィンドウが表示されたら、[Click Use Token] をクリックします。
image.png

新しく生成されたトークンが「Available Tokens」に表示されます。
image.png

3.Postman で使用可能なデスクトップフローを一覧表示する

3-1. 「Params」タブを選択し、HTTPメソッドに[Get] ⇒ リクエストURLに下記の値を設定し、[Send] ボタンをクリックします。

■ リクエストURL

{{webapiurl}}workflows?$filter=category+eq+6&$select=name,workflowid&$orderby=name

image.png

応答として、デスクトップフローの一覧が返ります。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png
workflowid は、この後案内する「デスクトップフローの実行をトリガーする」で利用します。
image.png

4.Postman でデスクトップフローの実行をトリガーする

4-1. HTTPメソッドに[POST] ⇒ リクエストURL と リクエストBody を設定し、[Send] ボタンをクリックします。

image.png
■ リクエストURL

{{webapiurl}}workflows(<3.で取得した workflowid>)/Microsoft.Dynamics.CRM.RunDesktopFlow

■ リクエストBody

{
    "runMode": "attended",
    "runPriority": "normal",
    "connectionName": "<Desktop flows コネクタの connectionName(※下記)>",
    "timeout": 7200
}

※ Desktop flows コネクタの connectionName の調べ方
Power Automate ポータル (make.powerautomate.com)で「接続」メニューから、 Desktop flows コネクタを選択します。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png
クラウドフローからデスクトップフローの実行履歴が無い場合、コネクタが存在しない可能性があります。
その際は、Desktop flows で接続を作成してください。

URLから、connectionName=から続く値が、connectionName となります。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

応答として、flowsessionId が返ります。
image.png
これは後述の、「デスクトップフロー実行の状態を取得する」で、フローの状態コードを取得する際に利用します。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

5.Postman でデスクトップフロー実行の状態を取得する

トリガーしたフローは非同期で実行されるため、終了ステータスを取得する方法も、APIで用意されています。

5-1. [Params] を選択し、HTTPメソッドに[Get] ⇒ リクエストURLに下記の値を設定し、[Send] ボタンをクリックします。

■リクエストURL

{{webapiurl}}flowsessions(<4.で取得した flowsessionId>)?$select=statuscode,statecode,startedon,completedon

image.png

応答の statuscode が終了コードです。
4 が返れば Succeeded です。
{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png

他のコードは以下をご参照ください。

まとめ

Power Automate のデスクトップフローを Power Automate ポータルやクラウドフローを介さずに、Web API から管理や実行する方法を説明しました。
Web API からデスクトップフローを実行できるということは、様々なシステムからフローのトリガーを組めるということです。
これは、業務システム等にデスクトップフローを組み込み、業務フローの一部をRPAに肩代わりさせる事が可能ということです。

使い方次第で、強力な機能となると思います。

14
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
5