ADVERTISEMENT

【Power Automate】承認者の動的指定が急に動かない時の会社環境での安全な再設定

【Power Automate】承認者の動的指定が急に動かない時の会社環境での安全な再設定
🛡️ 超解決

Power Automateで承認フローを運用している途中、承認者の動的指定が突然動作しなくなるトラブルが発生することがあります。特に会社のテナントでは、古い承認アクションの非推奨化やコネクタ更新の制限が原因で、条件式や割り当て先が機能しなくなるケースが急増しています。この記事では、まず原因を切り分けるための確認ポイントと、管理者権限なしでも安全に再設定する手順を解説します。

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

  • 最初に見る場所: フローの実行履歴とエラーメッセージ、および承認アクションのコネクタバージョン
  • 切り分けの軸: 端末側の問題かアカウントの権限か、それとも管理設定(DLPポリシーやコネクタ更新)に起因するか
  • 注意点: 会社PCで古い承認アクションを強制更新すると管理者設定と競合する恐れがあるため、確認済みの代替手順のみ実行すること

ADVERTISEMENT

1. 原因の特定:なぜ動的指定が突然動かなくなるのか

承認者の動的指定が急に動かない場合、多くの原因は下記のいずれかに該当します。

  • 承認コネクタの非推奨化: Microsoftが2023年以降、旧承認アクション(「承認の開始と待機」など)を非推奨とし、新しい承認アクションへの移行を推奨しています。会社のテナントで更新が行われていないと、動的式が認識されなくなることがあります。
  • 条件式の構文エラー: 動的コンテンツや式の中で、文字列結合や関数の使い方に問題がある場合です。例えば concat('user@', 'domain.com') の代わりに 'user@domain.com' と直接書いてしまうケースなど。
  • 変数のスコープ外: 承認フロー内で定義した変数やトリガー出力が、承認アクションのスコープ外で使用されていると値が空になります。
  • ユーザー情報の取得権限不足: 承認者をメールアドレスやAzure ADユーザーIDで指定する場合、コネクタの接続アカウントに適切な読み取り権限がないと解決に失敗します。
  • 環境ポリシー(DLP)の変更: 管理者がData Loss Preventionポリシーを変更し、承認コネクタの使用が制限されている可能性もあります。

実際の事例として、ある企業の購買承認フローで、承認者を「申請者の上司」に動的に指定していたところ、特定の日からすべてのフローが「承認者を割り当てられません」エラーで停止しました。調査の結果、旧承認アクションのApprovalsコネクタが自動更新され、新しいバージョンで動的式の構文が厳密になったことが原因でした。

2. 最初に確認すべき項目

トラブルシューティングは以下の順序で進めると効率的です。

  1. フロー実行履歴を開く:該当フローの最新の失敗実行を開き、エラー詳細を確認します。「式の評価中にエラーが発生しました」「指定されたオブジェクトが見つかりません」などのメッセージが手がかりになります。
  2. 承認アクションの設定を確認:承認アクション(「承認の開始と待機」など)を開き、「割り当て先」に使われている動的コンテンツや式が正しいか確認します。特に @ 記号や引用符のエスケープが必要かどうかチェックします。
  3. コネクタのバージョンと状態を確認:左メニューの「データ」→「コネクタ」で「承認」コネクタのステータスが「接続済み」か確認します。バージョンが古い場合、最新に更新するかどうかを管理者と相談します。
  4. テスト用の簡易フローを作成:同じ環境で新しい承認アクション(「承認の作成と待機」)を使って、動的指定が正しく動作するかテストします。これで新旧アクションの違いを切り分けられます。
  5. 管理者に問い合わせる準備:DLPポリシーの変更履歴やコネクタ更新スケジュールを確認するため、社内のPower Platform管理者に問い合わせる前に、上記の情報をまとめておきましょう。

特に、実行履歴のエラーコードは原因特定に有用です。例えば ApiRequestFailed はコネクタ側の問題、ExpressionEvaluationFailed は式の構文ミスを示します。

3. 安全な再設定手順

管理者権限を持たない一般ユーザーでも安全に再設定できる方法を順に説明します。以下の手順は、現状のフローを壊さないように新しいアクションを追加する方式です。

  1. フローのコピーを作成:元のフローを右クリックまたは「保存済み」から「コピー」を選び、バックアップ用のフローを複製します。これで元のフローはそのまま残せます。
  2. 新しい承認アクションを準備:コピーしたフローを開き、問題の承認アクションの直後に「アクションの挿入」で「承認の作成と待機」(推奨)を追加します。このアクションは最新のMicrosoftTeamsApprovalsコネクタを使用します。
  3. 動的指定を再設定:新しい承認アクションの「割り当て先」に、過去に使っていた動的コンテンツを再度追加します。式ビルダーを使う場合は、@記号が自動で補完されるため、誤ったエスケープが発生しにくくなります。例えばユーザーのメールアドレスを動的に指定する場合、@{triggerOutputs()?['body/mail']} のように記述します。
  4. 古い承認アクションを無効化(削除しない):古いアクションはフローから削除せずに「アクションの非アクティブ化」を選んで無効にします。これでフロー全体の動作に影響を与えず、新しいアクションだけが実行されるようになります。
  5. テスト実行:保存後、「テスト」をクリックして実際に承認者割り当てが正しく行われるか確認します。テストが成功したら、本来のフローにも同様の変更を適用します。
  6. 元のフローに反映:テスト用フローで問題がなければ、本番フローに対しても同じ手順で新しい承認アクションを追加し、古いアクションを無効化します。このとき、元のフローを直接編集する前に、念のため別のコピーを取っておくと安心です。

この手順の利点は、管理者の許可なくコネクタをアップデートせずに、推奨される新しいアクションへ段階的に移行できる点です。

4. 状況別の比較表:古い承認アクション vs 新しい承認アクション

項目 古い承認アクション
(例:承認の開始と待機)
新しい承認アクション
(例:承認の作成と待機)
使用コネクタ Approvals(旧) Microsoft Teams Approvals(推奨)
動的指定の安定性 非推奨化に伴い不安定。特定の式でエラーが発生しやすい。 安定して動作。式の構文が厳密に評価されるが、直感的に使える。
管理者による制御 DLPポリシーでブロックされる可能性が高い。 既定で有効だが、管理者が明示的に禁止していなければ使用可能。
コネクタ更新の影響 自動更新により動作が突然変わるリスクがある。 Microsoft側で管理されるため、ユーザー側の設定変更は不要。
推奨移行時期 できるだけ早期に移行すべき。 現在の標準、今後も継続サポート。

表からわかるように、新しい承認アクションに移行することで動的指定のトラブルは大幅に減らせます。ただし会社環境では、管理者が新しいコネクタの使用を許可しているか事前に確認してください。

5. 避けるべき失敗パターンとその理由

よくある失敗例を挙げ、なぜそれを行ってはいけないのか解説します。

  • 古い承認アクションを直接編集して式を変更する:古いアクションでは、動的式の評価が不安定なため、修正後に別のエラーが発生する可能性があります。新しいアクションに置き換える方が確実です。
  • コネクタを手動で最新に更新する:会社の管理者が更新をブロックしている場合、上書きすると接続が切断されたり、DLPポリシーに違反する恐れがあります。管理者に連絡してから行うべきです。
  • 条件式に直接ユーザーのメールアドレスをハードコードする:動的指定が面倒だからといって静的なメールアドレスを入れてしまうと、承認者が固定化され、業務プロセスに支障をきたします。
  • 複数の承認アクションを残したままにする:古いアクションを無効化せずに、新しいアクションを追加すると、両方のアクションが実行されて重複承認が発生します。必ず古いアクションは無効化してください。

6. 管理者に確認すべきポイント

トラブルが解決しない場合、以下の情報を整理してPower Platform管理者に連絡しましょう。

  • コネクタ更新ポリシー:組織のテナントで承認コネクタの自動更新が有効かどうか。有効であれば、更新後に新しいアクションへの移行が必要かどうかを聞いてください。
  • DLPポリシーの該当コネクタステータス:「Microsoft Teams Approvals」コネクタがビジネスデータグループに追加されているか、あるいはブロックされているかを確認してください。
  • 環境のバージョン:Power Automateの環境がサポート外のバージョンになっていないか。また、GCC(Government Community Cloud)環境など特別な制限がある場合は、承認アクションの動作が異なる場合があります。
  • アクセス権限:承認者として指定するユーザー情報(メールアドレスなど)をフローが取得するために、適切なAPIアクセス許可が付与されているか確認してください。

管理者に状況を伝える際は、実行履歴のスクリーンショットと、使用している承認アクションの種類(古い/新しい)を具体的に示すとスムーズです。

7. よくある質問(FAQ)

Q1. 動的指定に使っている変数が空になってしまいます。
A. 変数が定義されるタイミングと承認アクションの実行順序を確認してください。変数が承認アクションより後に定義されていないか、またはスコープが異なるループ内で設定されていないかチェックします。変数は承認アクションの前に初期化しておく必要があります。
Q2. 新しい承認アクションでは動的指定ができるのに、古いアクションではエラーになります。
A. 古いアクションは非推奨であり、式の評価方法が異なるため、同じ式でも動作しないことがあります。新しいアクションに統一することをおすすめします。
Q3. 管理者が新しいコネクタの使用を許可していない場合、どうすればよいですか?
A. 管理者に新しいコネクタの使用申請を行ってください。その間の暫定対応として、古いアクションで動的指定を避け、静的な承認者リストを使うか、またはフローを停止せざるを得ません。必ず管理者と協議の上、移行計画を立てましょう。
Q4. 承認アクションの「割り当て先」に複数のユーザーを動的に指定したい場合、どのように書けばよいですか?
A. 新しい承認アクションでは、配列を直接指定できます。例えば @['user1@domain.com','user2@domain.com'] のようにカンマ区切りの配列を動的コンテンツで生成すると、複数の承認者に同時に割り当てられます。
Q5. フロー実行履歴に「NotFound」エラーが出ます。原因は何ですか?
A. 承認者として指定したユーザーが組織内に見つからないか、メールアドレスの形式が間違っている可能性があります。Azure ADユーザーIDで指定する場合は、objectId が正しいか確認してください。

まとめ

承認者の動的指定が突然動かなくなった場合、まずは実行履歴とコネクタのバージョンを確認し、原因を切り分けることが重要です。古い承認アクションは非推奨であるため、新しい承認アクションに移行することで多くのトラブルを回避できます。会社環境では管理者のポリシーを尊重し、勝手な更新は避けて、安全な手順(コピーの作成、新しいアクションの追加、古いアクションの無効化)を踏んで再設定してください。もし解決しない場合は、本記事で紹介した確認項目を整理して管理者に相談しましょう。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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

ADVERTISEMENT