TeamsとPower Automateを組み合わせて複数承認者の承認ワークフローを作成したいときはないでしょうか。
けど、そんな中で悩むことは、
・複数承認者の承認ワークフローを実装したが、うまく動作しない
ですよね。
今回はそんなお悩みを解決する
についてまとめます!
もくじ
TeamsとPower Automateを組み合わせた複数承認者の承認ワークフローのイメージ
TeamsとPower Automateを組み合わせた複数承認者の承認ワークフローのイメージについて説明をします。
サンプルは作業承認ワークフローとなり、前回の記事をベースにしています。
申請はTemasに追加したListsから行い、申請内容をリストへ登録します。
リストが登録されるとPower Automateのフローが実行され、Teams承認フローが起動します。
指定した複数の承認者に承認依頼が送付され、レビューした結果は申請者へ通知されます。
なお、今回は、複数の承認者へ承認依頼が一斉送信され、すべての回答結果を待つ仕様となり、
すべての人が承認となれば、結果は承認、だれか一人でも否認となれば結果は否認となります。
Listsに追加した申請アイテムの方にその結果情報が反映されます。
複数承認者の承認ワークフローは国内でよく使われる仕様ですが、複雑なロジックを組むことなく標準機能の中で手軽に使えることはうれしいですね。
それでは早速試してみましょう。
Teamsへ承認ワークフローをおこなう環境を準備する
まずはじめにTeamsへ承認ワークフローをおこなう環境を準備していきましょう。
具体的にはTeamsのチャネルを追加し、その中にリストを追加します。
環境構築の方法は前回の記事を参考にして、対応が完了したら次へ進んでください。
SharePointリストへ項目追加
SharePointリスト内に項目を追加していきましょう。
Sharepointのリスト構成は以下の通りです。
前回と異なる点は、承認者項目が一人の設定だったところが複数人の設定になっています。
列項目名 | 列の種類 |
---|---|
タイトル | 一行テキスト |
承認依頼内容 | 複数行テキスト |
ステータス | 選択肢 |
承認者 | ユーザー(複数選択を許可) |
審査日 | 日付と時刻 |
承認者項目は以下の複数選択を許可します。
ステータスの選択肢は以下のように「承認」、「照査中」、「否認」の三択にします。
ここまで出来たら環境の準備は完了です。
Power Automateへフローを設定する
Power Automateへ承認ワークフローを処理するためのフローを設定していきましょう。
Power AutomateをTeamsへ追加する
Power AutomateはプリセットでTeamsにあるかと思いますが、ない場合は[…]をクリックしPower AutomateをTeamsへ追加をしていきます。
Power Automateへフローを追加する
Power Automateを開き、[作成タブ]をクリックし、[+一から作成]をクリックします。
コネクタとトリガーを設定する画面になったら左上のフロー名を変更します。
トリガーを追加する
リストライブラリに「アイテムが追加されたとき」というアクションをキャッチするトリガーを追加していきます。
検索窓に「項目」と入力し、[項目が作成されたとき]を選択します。
サイトのアドレスを対象チームのアドレスを指定し、リスト名は作成したリストを選択します。
できたら新しいステップをクリックします。
複数承認者リスト保管用の変数を設定する
複数承認者リスト保管用の変数を設定していきます。
検索窓に「変数」と入力し、[変数を初期化する]を選択します。
名前を「strAuthorizerList」、種類は文字列を指定します。
複数承認者リスト保管用の変数に承認者の値を代入する
複数承認者リスト保管用の変数に承認者の値を代入していきましょう。
入力フォームから受け渡される値は配列の形式となります。
このままでは承認依頼通知を設定する際に同時配信ができませんので、
承認依頼通知を行えるデータ形式へ変換していきます。
具体的には配列の値を1件づつ取り出し、先ほど作成した変数に「;」区切りの文字列へ変換する処理をおこないます。
検索窓に「変数」と入力し、[文字列変数に追加]を選択します。
次に動的なコンテンツから承認者Emailを値に設定します。
設定後繰り返し文で囲まれればOKです。
PowerAutomateをはじめて触る方は違和感があるかと思いますが、便利機能ということでご了承ください。
承認作成アクションを追加する
承認作成アクションを追加していきます。
検索窓に「承認」と入力し、[開始して承認を待機]を選択します。
以下を入力していきます。
項目 | 設定内容 |
---|---|
承認の種類 | すべてのユーザーの承認が必要 |
タイトル | 通知のタイトルを設定します。 【承認依頼】<タイトル>とします。 |
担当者 | 変数「strAuthorizerList」を指定します。 |
詳細 | 承認通知の詳細を設定します。 |
アイテムリンク | リストアイテムのリンクを設定します。 |
アイテムリンクの説明 | リンクの表示名を設定します。 |
条件式を追加する
「開始して承認を待機」アクションの結果から処理を分ける条件式を追加します。
条件式の条件を以下のようにします。
「待機」アクションの結果、次の値を含まない、「Reject」
なぜ、「Rreject」を含まないという条件にするかというと、単一承認者の場合と複数承認者の場合の戻り値の違いに理由があります。
承認の種類「すべてのユーザーの承認が必要」を指定した場合の戻り値は、
<結果1>,<結果2>,<結果3>
のようにカンマ区切りの文字列となります。
以下ログとなりますが、承認者2名で、すべて承認の場合は「Approve,Approve」の結果になっていることがわかります。
一方で一人が否認すると「Approve,Rreject」となります。
この結果から単一承認者の場合の条件「結果、Approveを含む」の設定をしてしまうと、ミスマッチとなることがわかるかと思います。
ですので、「Rreject」を含まないという条件に変更をしたというわけです。
条件式「はい」/「いいえ」の処理を追加する
条件式「はい」/「いいえ」のそれぞれの処理を追加していきます。
条件式「はい」は承認の結果が「Approve」、つまり承認されたということなので、ステータスは「承認」、いいえの場合は「否認」となるよう各項目の値を指定します。
項目名 | 説明 |
---|---|
ID | リストのIDを指定します。 |
タイトル | リストのタイトルを指定します。 |
ステータス | 承認または否認を指定します。 |
審査日 | 審査日を指定します。 承認ワークフローの完了日を指定しています。 |
ここまでできたら一度保存をし、承認ワークフローが機能するか確認をしてみましょう。
承認ワークフローのテストを行う
承認ワークフローのテストを行っていきます。
承認の結果が「Approve」の場合の処理を追加したので、実際にリストアイテムを追加し、承認後に設定どおりの結果になるか確認をしていきます。
新規申請アイテムを追加する
[Lists]ボタンをクリックし、[新規]をクリックし、タイトルなどの項目に申請内容を入力していきます。また申請者は2名以上指定するようにします。
入力ができたら保存をします。
複数の承認者がすべて承認する
しばらくすると承認依頼通知が各承認者へくるので、承認者は内容確認の上、承認をしていきます。
サンプルは二名を承認者として、すべて承認を選択しています。
承認結果が反映されているか確認する
リストアイテムへ承認結果が反映されているか確認してみましょう。
はい、ステータスが承認となり、日付が入力されていることが確認できましたね。
複数の承認者のうち一人が否認する
次に複数の承認者のうち一人が否認した場合の結果を確認してみましょう。
申請は前回と同様のものを使います。
承認者のうち一人が否認をします。
結果は、
はい、否認となっていますね!
テストは成功です!
さいごに
いかがでしょうか。
今回は、
についてまとめました。
複数承認者の承認ワークフローの後続処理について要件によっては更に詳細な設定が必要となる場合がありますので、
必要に応じてPower Automateのドキュメンテーションを参照したり、具体的な設定例を参考にしてアレンジしてもらえばと思います。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
タカヒロ様
ヒントを頂きありがとうございます。Apply to Eachの箱の中に「文字列変数の追加」と「開始して承認を待機」の両方が入っていた為でした。ご記載のスクリーンショットを改めて拝見してみますと、確かに「Apply to Each」 と「開始して承認を待機」は別の箱になってました。ありがとうございました。
お世話になっております。ご記載の内容と同等の事を実現したく拝見しております。申請者AがSharePointリストの承認者欄へ2名登録(承認者Bと承認者C)した際のフローについて質問があります。手元の動作では、承認者Bへ2回承認依頼が回ってします状況です。1回目・・・AからBへの承認依頼。2回目・・・AからB&Cの承認依頼。
当事象について考えられる要因ございますでしょうか?お手数ですがご教授頂けますと幸いです。
いつもご利用ありがとうございます。
承認者へ2回承認依頼が回ってしまう件につきまして、原因としては2点考えられます。
1点目は複数承認者リスト保管用の変数「strAuthorizerList」に重複しているアカウントがある可能性がありますので、
ご確認いただき、もし重複アカウントがあれば、ロジックの見直しをいただきたくお願いいたします。
次に複数承認者リスト保管用の変数の中身が問題なく2重送信されてしまう場合は、承認アクションが2重に行われている可能性がありますので、
こちらもご確認いただき、2重実行されているようでしたら、ロジックの見直しをいただきたくお願いいたします。
いずれも繰り返し処理に要因があるかと存じます。
よろしくお願いいたします。