PADを使ってみよう ー （中級編）クラウドフローからのデータを入出力しインターフェースする

皆さんこんにちは、マイクロソフトの川端です。
Power Automate for Desktop (通称PAD) を使い始める方向けのトレーニングコンテンツを提供します。

Power Automate for Desktopの強力な機能として、デスクトップフロー(RPA)のクラウドフロー(オーケストレータ、システム間のAPI連携の機能を担う）との連携があります。

今回の学習の題材では、PADのクラウドフロー（クラウド環境）からのデータをデスクトップ環境へ引き渡し、PAD側で簡単な処理を行い、一連の流れを体験していただくことを狙いとしています。
構成の初歩としてはクラウドフローの用意されたテンプレートのアクションからデスクトップフローへ入出力変数の設定をしてデータの入出力を行う基礎を具体的に習得していただけます。

PADでは、機能の最小単位として、クラウドフロー内の構成要素（コンポーネント）としてデスクトップフローのアクションを設定し、機能モジュール化することが可能になっています。
また、デスクトップフロー内でのモジュールの相互呼び出しから、必要なデスクトップフロー構成（コンポーネント）を入れ替え、処理を共通化、実行させることが下図のような構成で可能になっています（すべて同一のPower Platform環境内で構成）。
![モジュール構成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/f3e0d0e6-07d8-6191-79c2-9d753d0697a9.png)

（注）本コンテンツでは、クラウドフローからデスクトップフローへの呼び出しを行うので、PADの有償ライセンスが必要になります。
PADの有償無償の違いについてはこちらのRPA Communityチャンネルなどでご紹介しています。
https://www.youtube.com/watch?v=s5-nkEFEdSM&t=173s

#1. 事前準備
- 最新版のPower Automate for Desktopのダウンロード：https://flow.microsoft.com/ja-jp/desktop/
- インストール、初期セットアップ手順: ロボ研@K2_kzyさんがまとめて頂いている内容が分かりやすいです。
    - https://qiita.com/K2_kzy/items/b8b22edbf56b65248949#2-%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%A9%E3%83%BC%E8%B5%B7%E5%8B%95

#2. クラウドフローからPower Automate for Desktopを呼び出す
###クラウドフローのテンプレートからフローの作成を開始しよう
https://flow.microsoft.com/ja-jp/
へアクセスし、「テンプレート」からteams関連のコネクタを検索します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/207b0f85-eeff-71d9-5cff-623a468950f1.png)

「AI Builderでメールのセンチメントを分析し、結果をTeamsに送信する」を選択しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/df7664ed-8f92-ebcb-6c80-ea425e92879c.png)

必要なコネクタを許可し、続行を押します。

編集画面で、ご自身のメールアドレスを記入しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/35f62348-cb88-b944-61b0-ce24f3bb55dc.png)

###デスクトップフローを構成しよう
PADのコンソール画面から、フロー名を設定していきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/01aabf47-ecd8-e560-e3ed-2e3ce28068c6.png)

入出力変数を設定しましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/c2f16c1c-cf94-34a2-a6e9-0515251a03c3.png)

「新しい入力変数の追加」で変数名：sentiment、外部名：sentimentとして変数名を定義します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/ed366b48-167c-1b4d-0b04-abf5124b49ed.png)

アクションから「メッセージ」を検索し、「メッセージを表示」のアクションを追加します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/963312a3-c4f6-801d-0442-e2753c2411c0.png)

「メッセージを表示」の編集画面で
- メッセージボックスのタイトル：フィードバックを届きました
- 表示するメッセージ：%sentiment%
    - {x}から定義済みの変数を選ぶと便利です
- メッセージボックスを常に手前に表示する：トグルをオン
以上を設定します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/e3253339-d4e4-fdd1-8771-a054e9723597.png)


###クラウドフローで作成したデスクトップフローに接続しよう

テンプレートの最後のアクションに新しいステップとしてPower Automate for Desktopを追加しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/f826ccfc-8d4f-1a61-428b-3a9ac1b79878.png)

モジュールを設定します。
- Desktopのフロー：設定したデスクトップフローの名称、「感情のデスクトップへの」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/438657ba-7fe3-8d28-592d-df4f1ce4d33e.png)


###実際に動作させてみよう
メールの本文に「楽しみだ」と入力し、自分自身にOutlookからメールを送ってみましょう。
テンプレートで定義済のフローの動作が開始されます。

クラウドフローからの処理がデスクトップ側に渡り、「フィードバックが届きました」というメッセージで、
元々データとして渡していた「楽しみだ」という文字列の感情分析の結果がデスクトップ側に通知され、Sentiment(PAD上は%sentiment%という変数)という変数の値に「Positive」という値が入った状態でデスクトップフローで処理が適切になされていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/531acf7e-4b23-fc5c-a96f-6b8cdce4aed4.png)

#(参考)デスクトップフローの間でデータを入出力しインターフェースする
今回はクラウドフローからの呼び出しを基本として構成しましたが、デスクトップフロー間でのデータの入出力も同様に構成可能となっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/d80e2e90-e76c-90ca-8e02-c8119da55fcb.png)

全く同じデスクトップフローを構成して、今回の出力変数の戻り値をデスクトップフローの中で同様に扱うことも可能です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/fc55b591-d031-a8d5-a4f5-f771f6fc4930.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/20a48f82-0ab1-c885-27da-51978d5ebcd0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/fc78714c-682f-7932-7e84-babd8125c750.png)


#3.まとめ
中級編として、Power Automate for Desktopの入出力変数の定義とクラウドフローからのデータの受け渡しの一連の流れを体験していただきました。クラウドフロー内での構成、デスクトップフロー間で必要な処理の共通部品化を行うことで、ターゲットアプリケーション、プロセスの変化に頑強なシステムを構成していきましょう。

[公式ドキュメント]:https://docs.microsoft.com/ja-jp/power-automate/desktop-flows/introduction
[Power Automate Community]:https://powerusers.microsoft.com/t5/Microsoft-Power-Automate/ct-p/MPACommunity
[初級編はこちら]:https://qiita.com/YutoKa/items/43dc0ac25e28192a4d78