SharePointリストを基盤にした業務フローで、Power Automateが想定外の繰り返し更新を引き起こすことがあります。リストのアイテムが変更されるたびにフローが起動し、そのフローがさらにリストを更新するため、無限ループに陥るケースが典型的です。このトラブルは気づかないうちに大量の実行が発生し、API制限に達したり、関連システムに負荷を与えたりする原因となります。本記事では、このループの原因を突き止め、確実に停止・防止するための確認手順を具体的に解説します。
【要点】この記事で確認すること
- 最初に見る場所: Power Automateの実行履歴とトリガー条件。どのような変更でフローが起動しているかを特定します。
- 切り分けの軸: トリガーが「アイテムが作成または変更されたとき」か、他のトリガーか。フロー内で更新している列を特定します。
- 注意点: 会社のSharePoint管理者権限がないと、フローの停止や条件変更ができない場合があります。管理者に依頼する前に、自分で原因調査できる範囲を明確にします。
ADVERTISEMENT
目次
ループの典型的な原因:トリガーと更新アクションの競合
Power Automateで「アイテムが作成または変更されたとき」トリガーを使うフローが、同じリストに対して更新アクションを実行すると、その更新が新たな変更としてトリガーを呼び出します。この連鎖がループです。特に、フロー内でリストの「変更者」や「更新日時」といったシステム列以外の任意の列を書き換えると、再度トリガー条件を満たします。
たとえば、承認フローで「状態」列を「承認済み」に更新すると、その更新が再びトリガーを起動し、同じフローが無限ループします。このようなループでは、Power Automateの実行履歴に短時間で何百もの実行が記録されます。さらに、SharePointのAPI制限に達すると、フローや他のサービスに影響が出ます。
ループを引き起こす具体的なシナリオ
以下の表に、よくあるループパターンとその原因をまとめました。
| パターン | トリガー条件 | フロー内更新アクション | ループ発生の有無 |
|---|---|---|---|
| 状態列の更新 | アイテムが作成または変更されたとき | 「状態」列を変更 | 発生する |
| コメントの追加 | アイテムが作成または変更されたとき | 「コメント」列に追記 | 発生する |
| 添付ファイルの追加 | アイテムが作成または変更されたとき | ファイル添付 | 発生する(添付は内容変更として扱われる) |
| 別リストの更新 | アイテムが作成または変更されたとき | 別のSharePointリストを更新 | 発生しない(トリガー元と異なるリストのため) |
| システム列のみの更新 | アイテムが作成または変更されたとき | 「変更者」などのシステム列を更新(通常不可) | 通常はトリガーされない |
この表を見れば、同じリストへの更新がループの直接原因であることがわかります。逆に、別のリストや外部システムへの更新ではループは発生しません。
最初に確認すべき3つのポイント
ループが疑われる場合、以下の3点を順に確認してください。これらはPower Automateの画面上で誰でも確認できる情報です。
1. 実行履歴の確認
Power Automateのフロー詳細画面で「実行」タブを開きます。ループが起きている場合、数分間に大量の実行が連続して記録されています。それぞれの実行をクリックして、トリガーされた時刻と結果(成功/失敗)を確認します。特に、すべての実行が同じ入力値(例えば同じアイテムID)を処理している場合、ループの可能性が高いです。
2. トリガー条件の設定
フローの編集画面でトリガー「アイテムが作成または変更されたとき」を選択し、「設定」をクリックします。ここで「トリガー条件」を使って、特定の列が変更されたときのみ起動するように制限できます。たとえば、{status neq ‘完了’}のように条件を追加することで、既に完了したアイテムの更新を無視できます。
3. フロー内の更新アクションの特定
フローの各アクションを確認し、SharePointリストの「アイテムの更新」アクションが存在するかどうかを調べます。もしあれば、その更新がトリガー元と同じリスト、同じアイテムを対象にしていないかを確認します。この更新がループの原因です。
ループ停止のための緊急手順
ループが発生している間もフローは実行され続けるため、まずはフローを停止させる必要があります。以下の手順で実施してください。
- Power Automateにサインインし、該当フローの詳細画面を開きます。
- 画面上部の「…」メニューから「オフにする」を選択してフローを停止します。これで新しいトリガーは発生しません。
- 実行履歴でまだ実行中のものがある場合、「キャンセル」します(ただし、すでに開始した実行は即時停止できない場合があります)。
- その後、フローを編集し、トリガー条件を追加するか、更新アクションを削除・修正します。
- 修正後、フローを「オンにする」前に、テスト用のアイテムで動作確認をしてください。
この手順は自分でフローを編集できる権限があれば実行可能です。権限がない場合は、SharePoint管理者またはPower Automate管理者に連絡し、フローの停止を依頼してください。
よくある質問(FAQ)
ループに関する疑問をいくつか想定して回答します。
- Q: ループが止まらない場合、どうすればいいですか?
A: 上記の手順でフローをオフにしても、すでにキューに入ったトリガーがすべて実行されるまで続く場合があります。そのまま待つか、Power Platform管理センターから該当フローの全実行を強制キャンセルすることも可能です(管理者権限が必要)。 - Q: トリガー条件を使ってもループが止まりません。
A: 条件式が正しく評価されていない可能性があります。たとえば、列の内部名と表示名の違いに注意してください。また、条件を空のままにしていないか確認します。 - Q: 同じリストを更新する以外の方法はありますか?
A: フロー内で更新する代わりに、「アイテムの承認」アクションや「電子メールの送信」など、リストを変更しないアクションに置き換えることができればループを回避できます。 - Q: ループが発生してもAPI制限は大丈夫ですか?
A: SharePoint Onlineにはテナント単位のAPI制限があります。大量の更新が短時間に発生すると、一時的にアクセスがブロックされる可能性があります。もし影響が出た場合、Microsoftサポートへの連絡が必要です。
再発防止策と設計のベストプラクティス
ループを一度止めたら、同じ問題が再発しないようにフローの設計を見直します。以下のベストプラクティスを参考にしてください。
- トリガー条件を厳密に設定する
「アイテムが作成または変更されたとき」トリガーには、常にトリガー条件を追加しましょう。たとえば、変更があった列を指定するか、特定の列の値が変化したときのみ起動するようにします。
条件例:@equals(triggerBody()?['Status'], 'Pending') - 更新アクションを別のリストに向ける
フロー内でリストを更新する必要がある場合、元のリストとは別のリスト(たとえばログ用リスト)に書き込むように設計します。そうすれば、トリガーが再発しません。 - ループ検出の仕組みを組み込む
一定回数以上の更新を検出したらフローを停止するロジックを追加することも可能です。変数を使って更新回数をカウントし、閾値を超えたらエラーを発生させる方法があります。 - フローのテスト環境で検証する
本番環境にデプロイする前に、テスト用のSharePointリストとPower Automate環境で動作を確認します。特に、更新アクションを含む場合は必ずループが発生しないことを確認します。 - 管理者に相談する
会社全体で使うフローの場合、IT部門のガイドラインに従って設計されているか確認します。管理者の承認を得ずに大きな変更は行わないようにします。
以上の対策を実施することで、ループのリスクを大幅に低減できます。もし既に複数のフローで同様の問題が発生している場合は、組織全体のフロー設計ポリシーを見直すきっかけにもなります。
まとめ
SharePointリストとPower Automateのループ問題は、トリガーと更新アクションの競合が主な原因です。まずは実行履歴を確認し、フローを停止させてから原因を特定します。多くの場合、トリガー条件を追加するか、更新先を別のリストに変更することで解決できます。ループはAPI制限やシステム障害につながる可能性があるため、日頃からフローの実行状況を監視し、再発防止策を講じてください。この記事の手順を参考に、トラブルを迅速に解消しましょう。
超解決 リモートワーク研究班
Microsoft 365の導入・保守を専門とするエンジニアグループ。通信障害やサインイン不具合など、ビジネスインフラのトラブル対応に精通しています。
Office・仕事術の人気記事ランキング
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Excel】文字が入っているセルの「個数」を数える!COUNTA関数の簡単な使い方
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【Outlook】予定表の「祝日」が表示されない!最新カレンダーの追加と二重表示の修正手順
- 【Teams】画面共有時に「音声」も共有する方法!音が流れない時の設定手順
