【PowerAutomate】承認フローを利用する

# 概要

PowerAutomateを使った承認フローを少しいじってみようと思います。

# Start an approval（開始して承認を待機）

この記事を書いているのが2020/12/24なのですが、1ヶ月？ぐらい前に作っていた承認フローは、
`Start an approval`という英語表記だったのに
![スクリーンショット 2020-12-24 20.15.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/fd44efa2-0f4d-fd21-3b36-4fb0581c6e62.png)

今日は検索にヒットしない。。。
まさかと思い、検索ボックスに`承認`と入力するとこのようにヒットしました。
![スクリーンショット 2020-12-24 20.12.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/3c74353b-a2b5-ea61-add1-bbaec05d1cc9.png)

日本語としてどうなんだろうとは思いますが、`Start an approval`→`開始して承認を待機`アクションに日本語対応されたようです。
まだまだ英語表記のものが多いですが、徐々に日本語対応されていくようですね。

## 承認の種類

![スクリーンショット 2020-12-24 20.21.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/a76df6f1-d7f6-bcff-4f11-efe3ad35cecd.png)

承認の種類は4つ

|承認の種類|概要|
|:--|:--|
|カスタム応答 - 1つの応答を待機|いずれかの承認者が応答することによりプロセスが完了します。|
|カスタム応答 - すべての応答を待機|プロセスを完了するには、すべての承認者が応答する必要があります。|
|承認/拒否 - すべてのユーザーの承認が必須|要求を完了するには、すべて の承認者の承認または却下が必要となります。<br>すべて の承認者が承認、またはいずれかの承認者が拒否した後に実行される 開始して承認を待つ アクションに続くアクション。|
|承認/拒否 - 最初に応答|要求を完了するには、いずれかの承認者が承認または却下する必要があります。<br>開始して承認を待つ アクションに続くアクションは、承認者のいずれかが決定した後に実行されます。|

ざっくりと、カスタム応答は、相手からの応答内容（選択肢）をカスタマイズできます。
承認 or 拒否という選択肢ではなく、2つ以上の何らかの選択肢を設けて、一問一答のアンケートのようなことができるのがカスタム応答の特徴です。
承認/拒否のアクションは、選択肢が2つのみで承認 or 拒否しか選べないアクションです。

## カスタム応答 - 1つの応答を待機 を試す

以下のように、カスタム応答の承認アクションを作成し、テスト実行します。
![screencapture-japan-flow-microsoft-manage-environments-Default-f37c99dd-fb85-406b-9726-b683dc62ec8c-flows-b08d0351-0a1c-4970-8a30-97fa1e4fca53-2020-12-25-19_05_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/792f361d-5581-d28a-f833-077c99462113.png)

テスト実行すると、誰かが承認するまで、承認アクションで停滞した感じになります。
![スクリーンショット 2020-12-25 19.11.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/8f1fc427-8e82-50ca-8a07-7ac8ea072915.png)
![スクリーンショット 2020-12-25 19.12.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/d5c6283d-2754-41d2-25d0-3aaf0bfac25b.png)

とりあえず、承認を依頼された hoge-taro で承認してみます。
承認依頼はメールアドレスを指定するため、対象者のメールに届いています。
メールを開くと以下のような表示になっています。
カスタム応答の選択肢として指定した3つ（`認める`,`認めない`,`認めたくない`）が選択肢として表示されていることが確認できます。
![スクリーンショット 2020-12-25 19.14.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/392b7529-b1ff-f170-d609-aa29a6853b5c.png)

ここでは`認めたくない`を選択します。
すると、テスト中だったフローが`ご利用のフローが正常に実行されました。`というグリーン表示に変わり、`開始して承認を待機`の出力内容（承認の応答内容）が確認できます。
![screencapture-japan-flow-microsoft-manage-environments-Default-f37c99dd-fb85-406b-9726-b683dc62ec8c-flows-b08d0351-0a1c-4970-8a30-97fa1e4fca53-runs-08585927160353908673995991981CU00-2020-12-25-19_17_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/f1dafad9-c293-c665-2033-a6bcb67b4318.png)

`カスタム応答 - 1つの応答を待機を試す`では、２人に承認依頼を出したうち、１人が回答したため、承認アクションが次のアクションに進んでいきました。
想定通りの動きです。

## カスタム応答 - すべての応答を待機 を試す

ここではすべての応答を待機する承認フローを検証します。
ほげ太郎とほげ次郎に対して承認フローを実行するため、２人が回答するまで待機するのかを確認します。
![screencapture-japan-flow-microsoft-manage-environments-Default-f37c99dd-fb85-406b-9726-b683dc62ec8c-flows-new-2020-12-25-19_27_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/57ba7c22-ffa1-5f58-2cf7-cb25ea1133fc.png)

まずは、ほげ次郎で回答します。
![スクリーンショット 2020-12-25 19.36.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/256265b8-7dcd-3cde-0737-c20b32771f9d.png)

２人に承認フローを依頼し、すべての応答を待機するため、ほげ次郎だけが回答した状態だと、承認アクションはまだ待機状態になっています。
![スクリーンショット 2020-12-25 19.38.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/ad501d15-bcc2-0927-b4d4-c3be8a3da71c.png)
![スクリーンショット 2020-12-25 19.38.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/fe1bb84f-3041-8a05-1013-a97df79483e8.png)

では残っているほげ太郎にも承認してもらいましょう。
ほげ太郎が承認すると、無事承認アクションが先に進み、今回のフローが完了します。
![screencapture-japan-flow-microsoft-manage-environments-Default-f37c99dd-fb85-406b-9726-b683dc62ec8c-flows-8b90ad17-5656-49d9-b81b-e927902b2d70-runs-08585927146783574533095565250CU14-2020-12-25-19_45_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/fca7d62f-b0c9-0e1d-5a0d-ef56d42486cd.png)

承認アクションの出力としては、複数人の承認結果がまとまっている状態です。
後続のアクションで、何らかの対応をする場合には、複数人分の応答内容が1つになっている状態を把握したうえで、利用する必要がありそうです。

### すべての応答を待機しているときの問題点

今回の例では、ほげ太郎とほげ次郎に対して承認（応答）を依頼しています。
私自身がテスターなので、全てのアカウントを操作している都合上、ほげ次郎が応答したという事実を知っています。

私としては、複数人に同時に承認を依頼し、その承認を全員が応答するまで待つ場合、誰が未回答（未応答）で、誰が回答済（応答済）なのか、途中の状態が気になって仕方ありません。
あまり気にならない人もいるのかもしれませんが、全員が応答するまでこのアクションはずーっと待機状態となるため、え？誰が応答してないの？応答してない人いるなら催促する？？ということを考えることはあるでしょう。

いろいろいじってみたものの、結局承認状態の途中経過を確認する機能を見つけることができませんでした。
これだと、使い勝手が少し悪い気がするのは私だけでしょうか・・・？

## 承認/拒否 - 最初に応答 を試す

カスタム応答とは違い、選択肢を自由にカスタマイズする項目はありません。
![スクリーンショット 2020-12-25 19.53.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/7e0e1c88-320c-c711-cfbe-76635a15925f.png)

カスタム応答のときと同じようにメールに承認依頼が届きます。
![スクリーンショット 2020-12-25 19.54.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/bf049109-93a1-5334-5def-dfb96025e26d.png)

承認するとアクションが進み、フローが完了します。
今回は全員の応答をまたないアクションなので、一人が承認するだけでOKです。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/794f2973-306c-51da-1d69-13fbf8d881a8.png)


## 承認/拒否 - すべてのユーザーの承認が必須 を試す

![スクリーンショット 2020-12-25 19.57.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/62eaebba-39ec-8949-c189-649ca593c29f.png)

一人が承認した状態で、あと一人承認してない（応答していない）人がいる状態でも、誰が承認していないのか知る方法はなさそうですね。
![スクリーンショット 2020-12-25 19.59.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/c1a6294b-2637-3197-e2cc-c23cd3dd6ed4.png)

ユーザーの設定によるのか、`承認／拒否`というボタンで表示される人もいれば、`Approve／Reject`というボタン表示になる人もいるようですね。
![スクリーンショット 2020-12-25 20.00.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/1d8690d3-c118-f215-b920-d25a00f65deb.png)

全てのユーザーの承認が終わるとこんな感じです。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/246556/519fd582-4e88-36ff-1602-bf6d36b91e87.png)

## 補足：Approval Detailsで利用可能なMarkdown

承認アクションで、詳細なメッセージの内容を記述できる部分があります。
ここではMarkdownが利用できるみたいなので、利用可能なMarkdown記法の参考情報を記載しておきます。
https://docs.microsoft.com/en-us/power-automate/approvals-markdown-support

# 最後に

色々と検証をしてみましたが、承認／拒否などをAさん→Bさん→Cさんというふうに、ワークフローのようなイメージで構築する分には活用できそうな気がしますが、１度の承認アクションで複数人への承認依頼を投げる場合、誰が回答して誰が回答していないのかがわからない仕組みだと非常に使いづらいなと思いました。

SharePointのドキュメントに何らかのファイルをアップしたら、全員でレビューして、かならず何か反応する。というような処理をしたい場合、誰がみてないの？ということを確認する術が無いのは困ったものです。。。
（実際にはそんなに面倒なフローは業務で存在しないんですがw）