くらっちのクラウド日記

仕事や勉強で得た Microsoft 365 関連の技術知識を投稿していくブログです。

【PowerAutomate】承認フローに期限を設けて、タイムアウト処理も実施する!!

・はじめに

Power Automateを利用して承認フローを作成したいんだよなー。
でも、申請者が承認依頼しても承認者の応答がない場合はどうしたらいいんだろう?

そんな時は、承認待ちが長く続くことを避けるために、承認待ちのアクションには期限を設けましょう。
※この記事は、Qiita から情報を最新化して移行しています。

・目次

・目的

承認フローで承認待ちが発生した場合、待ち時間の上限を設ける。
待ち時間の上限に達した場合の処理を設定する。

・実装方法

下図は承認フローの一例です。
この記事では、下記例を使って解説を行っていきます。
・トリガーが実行されたら指定した承認者に承認依頼を出し、応答を待ちます。
・承認/却下の応答があれば、結果に応じた処理を実施する。
・応答がなくタイムアウトした場合は申請者に通知する。

f:id:kurakurattyo:20211229223711p:plain

1.承認アクションにタイムアウト設定を実施する

「開始して承認を待機」アクションの右側「…」>「設定」をクリックします。
設定画面を開いたら下図赤枠内で期間(承認待ちする時間)を設定します。

f:id:kurakurattyo:20211229231511p:plain

期間を設定する際は、以下のフォーマットに合わせて「ISO 8601」形式で表現します。
「P」は開始文字、「Y/M/D」は年月日、「T」は時間、「H/M/S」は「時分秒」を表します。
[n] には数値を入力してください。

P[n]Y[n]M[n]DT[n]H[n]M[n]S

Power Automateの1つのフローが継続して稼働できるのは最大30日間です。
例えば、60日設定として「P60D」と入力した場合は上限30日を超えるため、下記エラーが表示されます。
また、「Y(年)」も30日を超える設定となるため利用できません。

f:id:kurakurattyo:20211229230958p:plain

具体的な利用例は下記の通り。 設定後に「完了」ボタンをクリックします。
※「H/M/S」の入力がなければ、T の記述は不要です。

# 20日後にタイムアウトさせたい
P20D

# 2日と16時間後にタイムアウトさせたい
P2DT16H

# 36時間後にタイムアウトさせたい
PT36H

# 10時間20分30秒後にタイムアウトさせたい
PT10H20M30S

2.タイムアウトした時にアクションを実行する

承認待ち状態でタイムアウトになった時に起動するアクションを設定します。
「開始して承認を待機」の直後にタイムアウト時に起動するアクション」を追加します。

アクション名の右側「…」>「実行条件の構成」をクリックします。

f:id:kurakurattyo:20211229232502p:plain

下図の通り「がタイムアウトしました」のみにチェックを入れて「完了」をクリックします。 f:id:kurakurattyo:20211229233704p:plain

これで、「開始して承認を待機」がタイムアウトした時に「メールの送信(V2)」が起動するようになりました。
しかし、このままではタイムアウトしなかった場合の処理が考慮されていません。
タイムアウトした場合」と「承認/却下の応答があった場合」で処理を分岐させる必要があります。

3.処理を分岐する

タイムアウトした場合」と「承認/却下の応答があった場合」で処理を分岐させるため、 期限を設定したアクションの直後で「並列分岐の追加」をクリックし「承認/却下の応答があった場合」に起動するアクションを追加します。

f:id:kurakurattyo:20211229234555p:plain

結果、こんな感じに分岐します。

f:id:kurakurattyo:20211229234731p:plain

これで、承認待ちフローに期限を設け、かつ、タイムアウトしても処理を続けられるようになりました!
Power Automate を使って承認フローを作成する機会は多いと思いますので、是非参考にして頂けますとすごく嬉しいです。