こんにちは。アーティサン株式会社の小刀稱(ことね)です。
Power AppsやPower Automateを用いて申請・承認を行うアプリを作成したことはありますか?
弊社でも、申請・承認アプリは特に要望の多いアプリの1つです。
アプリを作成する際、「承認忘れを防止するために、リマインド機能を実装できないか?」と要望を頂くことがあります。
そこで、今回はPower Automateを用いて承認のリマインド機能を実装するための対応方針を説明します。
内容としては、既にPower Automateでフローを作成したことがある方に向けた記事です。
Power Automate初心者の方は、以下の記事も参考にしてください。
Power Automateを用いた承認リマインド機能の対応方針
Power Automateを用いて承認のリマインド機能を実装するには、大きく3つの対応方針があります。
以下では、それぞれの方法について説明します。
リマインド用のフローを新しく作成する
リマインド用のフローを新しく作成する方法です。 フローの内容としては、以下のとおりです。
トリガー:スケジュール済みクラウド フロー(例:毎日 AM 7:00 に起動)
処理内容:各データの承認ステータスを確認、未承認となっている場合は承認者へ通知する
フロー作成の難易度が低いため、比較的容易に構築可能です。
ただし、承認処理を行っているフローとは別に、新しくリマインド用のフローを作成する必要があります。
フローの数が多くなると、管理する手間も増えますので、注意が必要です。
また注意点として、承認を依頼するアクション(例:「開始して承認を待機」アクション)の場合は、OutlookやTeams上から承認/拒否を選択することはできますが、リマインド通知を行うアクション(例:「メールの送信(V2)」アクション)では、本文内で承認処理はできません。
対応策としては、通知の本文内に、Power Automateが標準で提供している承認画面のURLを記載することをおすすめします。
承認画面のURLは、Office 365へログインし、Power Automate → 実施項目 → 承認 → 受信済みと進んだ際のURLです。
この画面で、自分が承認処理の行う必要があるアイテム一覧を確認し、承認/拒否を実施することができます。
「待ち時間」アクションを用いる
一定時間毎に承認処理が完了しているか確認し、承認が完了していない場合は、承認者にリマインド通知を実施する方法です。
作成したフローは以下です。
Do untilアクション内で、リマインド機能を実装しています。
具体的には、「待ち時間」アクション内で設定した時間が経過した後、承認処理が完了したか確認します。
承認処理が完了していない場合は、承認者に対し、リマインドメールを送信します。
フロー作成の難易度が低いため、比較的容易に構築可能です。
また、承認処理を行っているフローの中にリマインド機能を追加することができるため、新しくフローを作成する必要はありません。
ただし、1つ目で示した方法と同様に、リマインド通知を行うアクション(例:「メールの送信(V2)」アクション)では、本文内で承認処理はできません。
前述した対応策を実施してください。
承認依頼アクションのタイムアウトを用いる
承認依頼アクションにタイムアウト値を設定し、一定時間内に承認が行われない場合は、承認依頼アクションをタイムアウトさせ、再度新しい承認依頼アクションを実行する方法です。
作成したフローは以下です。
「承認を待機」アクションのタイムアウトに、承認を再通知するまでの値を記載します。
「承認を待機」アクションの右横にある三点リーダーをクリックし、「設定」を選択してください。
本アクションの設定画面が表示されます。
設定画面の「タイムアウト」の値に「PT1D」と記載します。
「PT1D」は「1日」を意味します。
この記載方法は「ISO 8601 duration format」に準拠しております。
詳細は以下を参照ください。
ISO 8601 #継続時間
また、「現在の時刻」アクションは、前の処理(「承認を待機」アクション)がタイムアウトした場合起動するように、「実行条件の構成」の設定を変更しています。
続いて、承認依頼の取り消しを行います。
Power Automateの承認依頼アクションで行う承認の状況は、Dataverseの「Approvals」というシステムテーブルに格納されます。
そこで、「Approvals」テーブルから対象のレコードを抽出し、承認状況を「取り消し」に更新します。
※Dataverseを操作する場合には、Power Automateの標準コネクタでは対応できません。プレミアムコネクタが必須となります。
なぜタイムアウトしたのに、わざわざDataverseのレコードを更新する必要があるのでしょうか?
それは、承認がタイムアウトとなった後も、OutlookやTeamsからは承認処理が実行できてしまうからです。
以下の画像をご覧ください。
この承認依頼アクションは既にタイムアウトしていますが、それにも関わらず通常通り承認処理ができてしまいます。
これでは、承認者が間違って、タイムアウトした後の承認依頼について、承認処理を実行してしまう可能性があります。
(タイムアウトした後の承認依頼について、承認/拒否を選択しても、Power Automateでは何も実行されません。)
そこで、Dataverseから対象のレコードを強制的に更新することで、タイムアウトした承認依頼は、承認処理を実行できないようにしています。
本方法の場合、承認を依頼するアクションを都度実行しているため、リマインド通知内にて、承認処理を実行できます。
また、承認処理を行っているフローの中にリマインド機能を追加することができます。
ただし、フロー作成の難易度は比較的高いです。
また、Dataverseを更新するため、Power Automateのプレミアムコネクタが必須となります。
承認リマインドにおける各方法のメリット・デメリット
今回紹介した対応方針について、メリット・デメリットを以下にまとめました。
|
メリット |
デメリット |
---|---|---|
リマインド用のフローを新しく作成する |
・作成の難易度が比較的低い ・Power Automateのプレミアムコネクタが不要 |
・新しくフローを作成する必要あり ・リマインド通知上で承認処理ができない |
「待ち時間」アクションを用いる |
・作成の難易度が比較的低い ・既存のフロー内で対応可能 ・Power Automateのプレミアムコネクタが不要 |
・リマインド通知上で承認処理ができない |
承認依頼アクションのタイムアウトを用いる |
・既存のフロー内で対応可能 ・リマインド通知上で承認処理ができる |
・作成の難易度が比較的高い ・Power Automateのプレミアムコネクタが必須 |
フロー作成の難易度としては、リマインド用のフローを新しく作成する方法が最も低いです。
よって、お手軽に実装するのであれば、こちらの方法をおすすめします。
また、フローの数を増やしたくない場合は、「待ち時間」アクションを用いる方法をおすすめします。
ただし、上記2つの方法は、リマインド通知上で承認処理を行うことはできません。
(通知メッセージ内に承認画面のURLを記載することで、承認一覧画面へ誘導することは可能です。)
承認者の手間を少しでも省くために、リマインド通知上で承認処理を行いたい場合は、
承認依頼アクションのタイムアウトを用いる方法をおすすめします。
この方法は、Dataverseの更新が必要となるため、Power Automateのプレミアムコネクタが必須となります。
皆さんの環境に応じて、使い分けてください。
本記事では、Power Automateを用いて承認のリマインド機能を実装するための対応方針について説明しました。
参考としていたいだければ幸いです!
【こちらも合わせて読みたい】
小刀稱知哉
大分県出身(温泉大好き)、現在は東京都在住
1990年生まれ
30才でメーカーの技術営業からIT業界にジョブチェンジ!!!
趣味は読書
主にMicrosoftのローコード(SharePoint・Power Platform)に関するに関する営業活動や設計、開発などを担当しております!
持ってる資格はPL-200/PL-300/PL-400/PL-600/MS-700/AZ-104/AZ-305/SC-200