Power Automateを使ってみよう ー （中級編）クラウドフローの承認フローの内容を受けてPADで請求処理自動実行

皆さんこんにちは、マイクロソフトの川端です。

# 1. PADの事前準備
- 最新版のPower Automate for desktopのダウンロード：
    - **2022年8月24日 時点の最新版は2.38です（→[最新版の確認方法]）。**
    - 最新版でない場合には以下よりインストーラーをダウンロードしお手持ちの端末環境でインストールしてください
        - https://docs.microsoft.com/ja-jp/power-automate/desktop-flows/install#install-power-automate
    もしくは
        - https://powerautomate.microsoft.com/ja-jp/robotic-process-automation/
    からダウンロード、インストールできます。

[最新版の確認方法]:https://qiita.com/YutoKa/private/bd5047681bbdb73b82bd

- インストール、初期セットアップ手順: ロボ研@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
- PADで操作する自動化対象のアプリケーション（請求書管理アプリ）
    - マイクロソフト吉田氏が日本語化してくれています
        - [zipファイル]
        - [インストール手順]


※本記事では、「新しいデザイナーで編集する」からの作成手順となります。
※旧デザイナーでの作成手順は[こちらからダウンロード]してください。

[こちらからダウンロード]:https://github.com/YutoKa/download/blob/main/%E6%97%A7%E3%83%87%E3%82%B6%E3%82%A4%E3%83%8A%E3%83%BC%E7%89%88_Power%20Automate%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86%20%E3%83%BC%20%EF%BC%88%E4%B8%AD%E7%B4%9A%E7%B7%A8%EF%BC%89%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AE%E6%89%BF%E8%AA%8D%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AE%E5%86%85%E5%AE%B9%E3%82%92%E5%8F%97%E3%81%91%E3%81%A6PAD%E3%81%A7%E8%AB%8B%E6%B1%82%E5%87%A6%E7%90%86%E8%87%AA%E5%8B%95%E5%AE%9F%E8%A1%8C_Qiita.pdf


# 2. クラウドフローで承認のフローを構成しよう
### クラウドフロー内で承認のフローを構成しよう
https://make.powerautomate.com/
へアクセスします。

※旧アドレス　https://flow.microsoft.com/ja-jp/
を登録されている方はブックマークの変更をお願いいたします。

自動化したクラウドフローを選択しましょう
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/a2fa41bb-26e9-a3c2-5f35-27a9a932e66e.png)


「新しいメールが届いたとき」を選択し、適当なフロー名を設定します。
今回は、例えば「承認された内容をPADに送り操作する」と名前を付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/9ced19dd-8b5d-4707-9140-5d7630168cc0.png)


コネクタの認証が必要な場合には、ここで設定してしまいましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/c2f9a978-a705-f84e-15b1-c92de3308d9f.png)
「新しいメールが届いたとき(V3)」というトリガーが生成されますので、ダブルクリックして左側の設定メニューを開きます。

「すべてを表示」をクリックして、設定項目を展開します。

簡単のため、差出人をご自身のメールアドレスに設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/985409ed-b203-57fe-99a6-f19d6a8ed20e.png)

設定できたら、左側のベインを閉じることで元に戻ることができます。
特定の件名のメールのみ承認するように、「件名フィルター」の項目に、
「承認フロー」と入力しておきましょう。

＋ボタンをクリック、「アクションの追加」をクリックすることで後続のアクションを追加できます。


「承認」と検索することで承認のアクションを選択できます。「開始して承認を待機」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/af1c1588-ab5b-945c-4487-e644e2499d82.png)


様々な承認のフローのオプションを選択できますが、今回は「承認/拒否 - すべてのユーザーの承認が必須」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/e0797825-da8c-087b-5540-dc5fc5fe48be.png)

担当者の欄にOutlookの動的なコンテンツとして指定可能な、「宛先」を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/fea20cb1-64b9-599d-3b71-7bbd0b5f77b8.png)

[詳細]にOutlookの動的なコンテンツとして指定可能な、「本文」を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/71e8edf1-64f4-7a6e-8511-792273a6d828.png)

また、タイトルには「承認依頼」など、相応しい名前をつけておきましょう。

※Microsoft365範囲でのPower Automateのさらなる[フローの構成はこちら]

[フローの構成はこちら]:https://qiita.com/YutoKa/items/f160f74f90686ff6ad3d#4-microsoft365%E3%81%94%E5%88%A9%E7%94%A8%E7%AF%84%E5%9B%B2%E3%81%A7%E3%81%AEpower-automate%E3%81%A7%E3%81%AE%E6%A7%8B%E6%88%90

# 3. PADでデスクトップフローを構成し準備しよう
「経費計算投入を行うデスクトップフロー」として新しく構成します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/5eca57c5-c8e3-af95-13c2-3edaa4ee55b7.png)

入出力変数の＋ボタンから新しく入力変数を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/148a70fd-ad92-4635-3296-75549daba92d.png)

既定値のまま進めます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/d1a7989d-046a-901d-9d22-e7fb7704c52c.png)

テキスト>[テキストの分割]アクションを設置します。
以下の変更を行います。

- 分割するテキスト：%NewInput%
    - 先ほど定義した入力変数で、{x}ボタンから指定可能です
- 標準の区切り記号：新しい行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/b2477b92-a3a1-7f2c-4429-bb83dadd9d7f.png)

これで生成された変数の「TextList」に改行された１行１行の値が入ってきます。

これからデスクトップレコーダーを通じて撮り貯めた画面要素をもとに、請求書管理アプリのテキストフィールドとの関係を以下の通り構成していきます。
以下のような文字列が%NewInput%の変数に渡った場合には、


```
2021/10/12 9:46:14
株式会社〇〇
marumaru@corporate.com
\100,000
未請求
```


- TextList[0]
    - リスト内に「2021/10/12 9:46:14 」などの１行目の文字列が格納されている
- TextList[1]
    - リスト内に「株式会社〇〇」などの２行目の文字列が格納されている
- TextList[2]
    - リスト内に「marumaru@corporate.com」などの３行目の文字列が格納されている
- TextList[3]
    - リスト内に「￥100,000」などの４行目の文字列が格納されている
- TextList[4]
    - リスト内に「未請求」などの５行目の文字列が格納されている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/42e1e2fe-fb2d-2ad6-c9a4-e0479ca18d2f.png)

例えば、以上のようにPAD内でデータとして扱われることになります。

※自動化対象のアプリケーションに対して、デスクトップレコーダーからどのように操作を撮り貯めていくかは、[初級編]を合わせてご参照ください。





# 4.クラウドフローからデスクトップフローのアクションを追加して処理を進めよう

クラウドフローからデスクトップフローの呼び出しには有償ライセンス（有人型RPA付帯のPower Automateユーザーライセンス）が必要となります。
そちらのライセンスをお持ちの場合には以下の手順でクラウドフローからデスクトップフローの呼び出しが可能となります。
有償ライセンスをお持ちでいない場合には、[Microsoft365ご利用範囲でのPower Automateでの構成]から本中級編を継続頂ければと思います。

[Microsoft365ご利用範囲でのPower Automateでの構成]: https://qiita.com/YutoKa/items/f160f74f90686ff6ad3d#4-microsoft365%E3%81%94%E5%88%A9%E7%94%A8%E7%AF%84%E5%9B%B2%E3%81%A7%E3%81%AEpower-automate%E3%81%A7%E3%81%AE%E6%A7%8B%E6%88%90


クラウドフロー側に戻り、デスクトップフローのアクション、「PADで構築したフローを実行する」を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/4a7a3350-efc0-00e8-b236-9851af1e9588.png)

PADで構成したデスクトップフローの一覧が表示されるので、保存したものを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/8ab08485-acc7-2bed-fb73-cbc42daeaec0.png)

実行モードにアテンド型、PADに渡す変数として、Outlookのトリガーにおける本文を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/f0b19882-8773-13f6-d3c8-8d1150755743.png)

これで準備完了です。

# 5.実際に実行してみよう

メール本文をプレーンテキストにして自身にメールを送ってみましょう
送信するテキストとして、以下のサンプルデータを使ってください。

```
2021/10/12 9:46:14
株式会社〇〇
marumaru@corporate.com
\100,000
未請求
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/b47832a9-aea0-bd0f-680f-4a6c71711af0.png)
※HTML形式で送るとタグ付けされた構成の本文のデータがクラウドフロー内で渡されるので、必ずテキスト形式で送りましょう。


実行を行うとTemasやOutlookを通じて承認依頼が飛んでいることが分かります。

- Teams上での承認依頼
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/e799d9c0-41fa-4a5a-23ac-58ce93074be3.png)

- Outlook上での承認依頼
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/8875dfc5-e806-405d-bbd4-f9b37fa64084.png)


クラウドフローの実行履歴を確認することで、現在動いているフローのステータスも見ることが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/5139e7dd-e08d-fcb8-4e74-11e072d4732f.png)

承認が行われるとクラウド側でのフロー実行履歴が示す通り、デスクトップフローに処理が渡っている様子が確認できます。

実際の動きはこちらでもご紹介しています。
<iframe width="560" height="315" src="https://www.youtube.com/embed/Z8yZn2kPeGY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>


# 4´ Microsoft365ご利用範囲でのPower Automateでの構成
クラウドフローからデスクトップフローの呼び出しには有償ライセンス（有人型RPA付帯のPower Automateユーザーライセンス）が必要となります。
そちらのライセンスをお持ちでない場合に、決裁結果をTeamsで通知するフローを構成してみましょう。


＋ボタンをクリック、「アクションの追加」から[コントロール]を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/99a66e38-efcf-0654-e687-ba1897a2a19c.png)

条件を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/e0b4111b-9ca5-f55b-3396-c70bc3bd4e04.png)


[承認を待機]アクション内にある[動的なコンテンツ]として「結果」が「Approve」と等しい、という条件を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/bc928a8b-7f8b-767e-924d-cd87bae32d9c.png)

「Trueの場合」にアクションを設定していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/7b8609fe-2659-1204-82e5-18cb22573175.png)

Teamsを選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/626eb23c-a350-726d-c63d-79fd2249ecb6.png)


「チャットまたはチャネルでメッセージを投稿する」を選択し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/110968fa-40d4-912f-72be-4552059d4df4.png)


- 投稿者：フローボット
- 投稿先：Chat with Flow bot
- Recipient: 差出人
- Message:[宛先]から以下の内容が承認されました。[本文]

以上のように設定をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/9c546c6d-dc43-eef2-c39c-40b8dafbed68.png)

同様に、[条件]で[いいえの場合]も設定しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/8afdf7c3-5f60-374e-d2f8-4ede955bdba5.png)

- 投稿者：フローボット
- 投稿先：Chat with Flow bot
- Recipient: 差出人
- Message:[宛先]から以下の内容が**否決**されました。[本文]
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/800a1995-7c30-3779-a87a-24d5981769f9.png)



以上のように設定をします。
あとは、[実際に実行をしてみましょう]、意図した通りの動作になりましたでしょうか？！

[実際に実行をしてみましょう]: https://qiita.com/YutoKa/private/f160f74f90686ff6ad3d#5%E5%AE%9F%E9%9A%9B%E3%81%AB%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86

# 作成時のTIPS
新・旧デザイナーの間で切り替えるには、以下のように操作することで切り替えることができます。

- 編集画面内での切り替え
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/905ac75a-85c1-fb7b-0546-82d514e3b663.png)

- 実行履歴内での切り替え
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/808554/d815ad48-9d3e-6df7-2a96-196dbf62a9a5.png)


# まとめ
中級編として、クラウドフローでの承認フローの構成から、メール本文の内容を読み取り、PADにデータを渡して、請求処理自動実行する一連の流れを体験頂きました。
こちらの内容をベースとしてPower Appsのキャンバスアプリやモデル駆動型アプリで入力された内容を扱って承認フロー、PADへの自動連携も可能です。
今後上級編としてPower Platformの様々な製品と連携して動作するようなハンズオンシナリオも構成してまいります。

[公式ドキュメント]: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://cravelweb.com/rpa/power-automate-desktop/how-to-loop-for-each-text-lines-microsoft-power-automate-desktop

[初級編]:https://qiita.com/YutoKa/private/2a53df288e19ac67216b

[PADインストール手順]: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
[zipファイル]:https://go.tyoshida.me/rpademoapp
[インストール手順]:https://memo.tyoshida.me/power-platform/power-automate/power-automate-desktop-sample-legacy-app-japanese-available/
[エクセルファイル]:https://docs.google.com/spreadsheets/d/1hXhyA-tlxShp6zG9qcv77f4XWXv6Nmhw/edit?usp=sharing&ouid=110259564074247075994&rtpof=true&sd=true