ADVERTISEMENT

【Power Automate】承認期限を過ぎたら催促したい場合の設計

【Power Automate】承認期限を過ぎたら催促したい場合の設計
🛡️ 超解決

Power Automateの承認フローを運用していると、承認者が期限を過ぎても処理しないケースが発生します。放置されたままでは業務が滞るため、自動で催促メールを送る仕組みが必要です。しかし、単純に期限超過を検知するだけでは、深夜に催促が届いたり無限ループに陥るリスクもあります。本記事では、Power Automateで承認期限を過ぎた場合に効率的に催促するための設計方法を、具体的な手順と注意点を交えて解説します。

【要点】この記事で確認すること

  • 最初に見る場所: 承認フロー内の「タイムアウト」設定とループ条件。既定のタイムアウトは30日だが、短く変更可能。
  • 切り分けの軸: トリガー(承認開始時・期限超過時・スケジュール)とアクション(条件分岐、メール送信、ループ制御)の組み合わせ。
  • 注意点: 会社PCでフローを変更する前に、管理者にライセンス(特にプレミアムコネクタ)と共有フローの編集権限を確認すること。無限ループを防ぐために、ループ回数や最終警告の判定を必ず実装する。

ADVERTISEMENT

1. 承認期限の催促を実装するための基本設計

Power Automateで承認フローを作成する際、既定の動作では承認依頼から30日間応答がないと自動的に期限切れとなります。しかし、30日は長すぎる場合が多く、また期限切れになった後の処理(催促やエスカレーション)は別途設計する必要があります。基本的な設計の流れは、まず承認アクションにタイムアウト値を設定し、期限が切れた際の分岐(「承認」「拒否」「タイムアウト」のいずれか)を条件として、催促アクションを実行します。催促方法には、メール送信、Teams通知、あるいは別の承認者へのエスカレーションなどが考えられます。

1.1 タイムアウト設定の基本

承認アクション(「承認の開始と待機」など)のプロパティで「タイムアウト」を設定できます。ここにISO 8601形式(例:PT24Hで24時間)で期間を指定します。この期間内に応答がない場合、フローは「タイムアウト」ブランチに進みます。注意点として、タイムアウトはフローがトリガーされてからカウントが始まるため、休日を考慮したい場合は別途スケジュールトリガーを使うなど工夫が必要です。

1.2 催促のための条件分岐

タイムアウトブランチ内で、さらに条件を追加して催促メールを送信します。例えば、初回のタイムアウトなら軽いリマインダー、2回目なら上司もCCに入れる、というように段階的にエスカレーションする設計が一般的です。このためには、フロー内の変数(例:リマインダー回数)をインクリメントしながらループ処理をする必要があります。

2. 承認フローにおける期限設定と条件分岐のポイント

期限設定は単なるタイムアウトだけではありません。スケジュールトリガーを使って定期的に未承認のアイテムをチェックする方法もあります。以下に代表的な2つのパターンを比較します。

設計パターン トリガー メリット デメリット
タイムアウトベース 承認アクションのタイムアウト シンプル、リアルタイムに近い 1回のタイムアウトしか捕捉できない、ループ制御が別途必要
スケジュールベース 定期的なスケジュールトリガー 複数回の催促が容易、休日対応できる ラグが生じる、フローが複雑になりがち

2.1 タイムアウトベースの設計ではループ制御が必須

タイムアウトブランチで催促メールを送った後、フローを終了してしまうと、再度同じ承認に対して催促が行われません。複数回催促したい場合は、承認を再送するか、ループを回す必要があります。承認を再送するには「承認の開始と待機」を再度呼び出すか、別のフローでステータスを確認します。ただし、単純にループにすると無限ループの危険があるため、必ずリマインダー回数を変数に保存し、上限(例:最大3回)を設定してください。

2.2 スケジュールベースの設計ではフィルター条件が重要

スケジュールトリガー(例:毎日8時に実行)を使う場合、すべての未承認アイテムを取得し、期限を過ぎているものだけを抽出します。このとき、過去に催促済みのアイテムを除外するために、カスタムフィールドや別のデータソースに催促済みフラグを持たせると良いでしょう。また、実行時刻によっては休日や就業時間を考慮するために、条件式で曜日や時間をチェックしてください。

3. 催促メール送信のアクション設定手順

ここでは、承認フロー内でタイムアウト時に催促メールを送信する具体的な手順を説明します。例として、SharePointリストに保存された承認リクエストを想定します。

  1. フローを編集し、承認アクション(「承認の開始と待機」)のプロパティで「タイムアウト」を設定(例:PT12H)。
  2. 承認アクションの直下に「条件」コントロールを追加し、「結果」が「タイムアウト」に等しい場合の分岐を作成。
  3. 「はい」の分岐内で、「変数を初期化する」アクションを使い、リマインダー回数を保持する整数変数を作成(初期値0)。
  4. その後に「メールの送信」アクションを追加。宛先に承認者のメールアドレス、件名に「【催促】承認リクエストが未処理です」、本文にリクエスト詳細を動的に挿入。
  5. さらに「承認の開始と待機」アクションをもう一つ追加し、同じ承認を再送する。ただし、このアクションの前に変数をインクリメント(「変数の増加」)する。
  6. ループを制御するため、承認アクションの前に「条件」コントロールを追加し、リマインダー回数が上限(例:3)未満の場合のみ再送するように設定。
  7. 上限に達した場合は、別のアクション(例:上司へのエスカレーションメール)を実行してフローを終了。

この手順ではループが発生するため、必ずテスト環境で動作を確認し、無限ループにならないことをチェックしてください。

4. 実際のフロー例と比較表(状況別の設計パターン)

状況に応じて最適な設計を選択するために、代表的なパターンを比較します。

状況 おすすめ設計 キー設定
1回だけリマインダーを送りたい タイムアウトベース・ループなし タイムアウト値を適切に設定、条件分岐でメール送信のみ
複数回催促(最大3回)したい タイムアウトベース・ループあり 変数で回数管理、上限チェック、最終警告メール
毎日決まった時間に催促したい スケジュールベース スケジュールトリガー、期限超過フィルター、催促済みフラグ
休日をスキップしたい スケジュールベース+曜日条件 曜日判定条件、営業日カレンダー参照

5. 失敗パターンとトラブルシューティング

実際の運用でよく発生する失敗事例を紹介します。

5.1 無限ループによる実行制限超過

ループ内で承認アクションを再実行すると、タイムアウトが再度発生して再びループする可能性があります。対策として、リマインダー回数の上限を設けるだけでなく、ループのたびにタイムアウト値を段階的に長くする(例:初回12h、2回目24h)と、制限に引っかかりにくくなります。また、Power Automateの1回のフロー実行には最大リトライ回数(既定で3回)があるため、それを超えるとフローが失敗します。

5.2 タイムアウト時間の誤解

タイムアウトは承認アクションの待機時間であり、フロー全体の実行時間ではありません。そのため、承認がすぐに完了しても問題ありません。しかし、タイムアウト前に承認者が「拒否」した場合も、タイムアウトブランチは実行されません。この挙動を理解しておかないと、意図しない動作に混乱します。

5.3 メールが届かない

メール送信アクションが失敗する原因として、差出人のメールアドレスが正しく設定されていない、組織外への送信がブロックされている、コネクタが未認証などがあります。また、Power Automateのメールコネクタは既定で「現在のユーザー」として送信されるため、意図した差出人にならないことがあります。必要に応じて共有メールボックスやサービスアカウントを使用してください。

6. 管理者に確認すべき設定項目

組織の管理者が把握しておくべき設定項目をまとめます。フローを公開する前に確認してください。

  • ライセンス: 承認アクションの再実行やループ処理には、Power Automateのプレミアムライセンス(有料)が必要な場合があります。特に「承認の開始と待機」を複数回使用するフローは、標準ライセンスでは制限があることがあります。
  • コネクタの設定: メールの送信にはOutlookコネクタを使用しますが、組織のポリシーによってはメール送信が制限されている場合があります。管理者ポータルでコネクタのアクセス許可を確認してください。
  • 共有フローの権限: フローを共有する際、編集権限や実行権限を適切に設定します。特に、再送やループを含むフローは権限の範囲に注意が必要です。
  • データ損失防止ポリシー: Power AutomateのDLPポリシーで、承認データやメールアドレスの外部送信が制限されていないか確認します。

7. よくある質問

Q1: 承認フローでタイムアウトを設定しても、催促が来ないのはなぜ?

タイムアウト値が長すぎるか、タイムアウトブランチが正しく構成されていない可能性があります。フローを保存してテスト実行し、承認を放置したときにタイムアウトブランチに入るか確認してください。また、タイムアウトはフロー開始時からの経過時間であるため、既にタイムアウトが発生している承認依頼に対しては後から催促できません。

Q2: 複数回の催促メールを送る方法は?

ループ処理を組み込むか、スケジュールトリガーで定期的にチェックします。ループ処理では変数を使用してリマインダー回数をカウントし、上限を設定します。スケジュール方式では、未承認アイテムのリストをフィルタリングし、催促済みかを判断するためのフラグ(例えばSharePointリストの列)を利用すると良いでしょう。

Q3: 承認者に直接ではなく、上司にエスカレーションしたい。

リマインダー回数が上限に達した場合の分岐で、上司のメールアドレスに通知を送るアクションを追加します。上司のアドレスは動的に取得するか、固定値として設定します。また、承認アクション自体を別の承認者に変更する場合は、承認者の変更が必要です。これはPower Automateのアクションでは直接できないため、別途SharePointリストなどで承認者を管理して動的に割り当てる方法を検討してください。

8. まとめ

Power Automateで承認期限を過ぎた際の催促を設計するには、タイムアウト設定と条件分岐の基本的な理解が不可欠です。単発の催促ならタイムアウトベース、複数回や休日対応が必要ならスケジュールベースが適しています。どちらの方式でも、無限ループ防止のための上限設定と、テスト環境での検証を必ず行ってください。また、メールが届かない問題やライセンス制限については、事前に管理者と調整してからフローを公開することを推奨します。適切な設計により、承認プロセスの遅延を最小限に抑え、業務効率を向上させることができるでしょう。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

ADVERTISEMENT