Power AutomateでSharePointリストの更新をトリガーにしたフローを作成した際、意図せずフローが何度も実行されてしまう現象が発生することがあります。これは、フロー内で同じリストを更新すると、その更新が再度トリガーとなりループするためです。このループはフローの実行回数を消費するだけでなく、SharePointリストに大量の変更履歴を残し、パフォーマンス低下を招く可能性があります。本記事では、このような想定外の繰り返しを安全に停止し、再発を防止するための再設定手順を説明します。会社の環境で行う際の注意点も含めて解説します。
【要点】この記事で確認すること
- 最初に見る場所: フローの実行履歴とトリガー条件設定
- 切り分けの軸: トリガー条件の設定ミス、フロー内の更新処理、ループ防止フラグの有無
- 注意点: 会社PCでは管理者権限が必要な場合があるため、勝手に変更せずチームやIT部門に確認する
ADVERTISEMENT
目次
1. 想定外の繰り返しが発生する原因
Power AutomateのSharePointコネクタには、「アイテムが作成または変更されたとき」というトリガーがあります。このトリガーは、指定したリストでアイテムが作成されるか、既存のアイテムの任意の列が更新されたときにフローを開始します。トリガーが起動すると、フロー内のアクションが実行されますが、もしフロー内で同じリストに対して更新アクション(例:「アイテムの更新」)を実行すると、その更新が再度トリガー条件を満たし、フローがもう一度実行されます。これが無限に繰り返されることでループが発生します。
トリガー条件を何も設定していない場合、すべての列の変更が対象となります。そのため、フロー内でどの列を更新してもトリガーが起動します。特に、フロー内で更新する列が常に同じ値であっても、更新処理が実行されるたびに変更が発生したと見なされるため、ループが続きます。この仕組みを理解しておくことが重要です。
代表的なシナリオ
例えば、次のようなフローを考えます。
- トリガー:SharePointリスト「タスク管理」でアイテムが作成または変更されたとき
- アクション:アイテムの更新で、ステータス列を「未着手」から「進行中」に変更する
- このアクションにより、アイテムが変更されたと見なされ、再度トリガーが起動する
- 結果として、ステータスが同じ値に更新され続け、無限ループになる
トリガーの内部動作
トリガーは変更された列の情報を取得し、条件に合致するか判断します。トリガー条件で「変更された列」を指定すると、指定された列の変更のみがトリガー対象になります。この設定がない場合、すべての列の変更がトリガー対象となるため、フロー内の自己更新がループを引き起こします。
2. 現在の設定確認と緊急対応
ループに気づいたら、まずはフローの実行履歴とトリガー設定を確認します。以下の手順で現状を把握しましょう。
- Power Automate(https://make.powerautomate.com)にサインインします。会社のアカウント(通常はMicrosoft 365の組織アカウント)を使用します。
- 左側のメニューから「マイフロー」を選択し、問題のフローをクリックして開きます。
- 画面上部の「実行履歴」タブをクリックし、最近の実行を確認します。同じアイテムが短時間に何度も更新されている場合、ループが疑われます。
- トリガーの設定を確認するため、フローの編集画面を開きます。トリガーカードをクリックし、「トリガー条件」の設定を確認します。何も設定されていない場合は、すべての変更がトリガー対象になっています。
- フロー内のアクションを確認し、同じリストに対して更新を行っているアクションがないか調べます。特に「アイテムの更新」や「アイテムの作成」アクションがリスト指定されている場合、ループの原因となります。
- トリガー条件に「変更された列」が指定されている場合、その列名が正しいかどうかをSharePointリストの設定と照合します。内部名が誤っていると条件が機能しません。
緊急対応手順
ループが発生している最中は、フローが無制限に実行され続ける可能性があります。緊急時は以下の対応を行います。
- フローを無効化します。フローの詳細画面で「オフ」ボタンをクリックすると、それ以上実行されなくなります。
- SharePointリスト側で、不要な変更を元に戻すか、リストのバージョン管理を使用して以前の状態に復元します。ただし、復元によって再度トリガーされる可能性があるため、フローをオフにしてから行います。
- IT管理者やチームのリーダーに状況を報告します。会社のポリシーによっては、フローの無効化が許可されていない場合があります。
- フローを無効化した後、原因を特定し再設定を行います。
3. 安全な再設定の手順
ループを防止するためには、トリガー条件の絞り込みと、フロー内の更新アクションでのループ防止策が必要です。以下の手順で安全に再設定します。
- トリガーカードをクリックし、「トリガー条件」を展開します。
- 「変更された列」フィールドに、監視したい列の内部名をカンマ区切りで入力します。内部名はSharePointリストの設定で確認できます。
- 「列の変更をトリガーする」を「はい」に設定します。
- フロー内に「条件」アクションを追加し、更新対象の列の現在値と新しい値を比較する条件式を設定します。
- 条件が真の場合のみ「アイテムの更新」アクションを実行し、偽の場合はアクションをスキップするように構成します。
- フロー内で更新する列がトリガー条件に含まれていないことを確認します。もし含まれている場合は、トリガー条件からその列を除外するか、別の列を監視します。
- ループ防止用の列(例:「最終更新フラグ」)をSharePointリストに追加し、フロー内でその列も更新するようにします。そして、トリガー条件ではその列を除外します。
- すべての設定が完了したら、フローを保存し、テスト実行を行います。テストでは、手動でアイテムを更新し、フローがループしないことを確認します。
設定の比較
| 項目 | ループが起きる設定 | 安全な設定 |
|---|---|---|
| トリガー条件 | 未設定(すべての列の変更を監視) | 特定の列のみ監視(フロー内で更新しない列) |
| フロー内の更新アクション | 条件なしで常に更新 | 条件分岐で値が変更される場合のみ更新 |
| ループ防止策 | なし | トリガー条件の指定、条件分岐、ループフラグ列の利用 |
| 実行回数 | 無制限に増加 | 必要な回数のみ |
4. よくある失敗パターンと管理者確認ポイント
失敗パターン1:トリガー条件の列指定を間違える
内部名を間違えると、トリガー条件が機能せず、すべての変更を監視してしまいます。内部名はSharePointリストの設定画面で確認可能です。また、表示名と内部名が異なる場合があるので注意します。
失敗パターン2:条件分岐のロジックを逆にする
例えば、「ステータスが未着手の場合のみ更新」とすべきところを、「未着手以外の場合に更新」としてしまうと、逆にループが発生する可能性があります。条件式は慎重に設定しましょう。
失敗パターン3:複数のフローが干渉する
同じリストを監視する複数のフローが存在する場合、一方のフローの更新が他方のトリガーとなり、カスケードループが発生します。この場合は、トリガー条件を調整するか、フローを統合する必要があります。
管理者へ確認すべきポイント
会社環境では、Power Automateの設定変更に管理者権限が必要な場合があります。以下の点を管理者に確認してください。
- フローを無効化する権限:通常、フロー作成者自身に無効化権限がありますが、組織ポリシーで制限されている可能性があります。
- トリガー条件の変更:列の内部名を知るために、SharePointリストの設定へのアクセス権限が必要です。自分に権限がない場合は管理者に依頼します。
- ループ防止列の追加:リストに新しい列を追加する権限が必要です。SharePointの管理者に依頼して、ループ防止用の列を追加してもらいましょう。
- 実行回数制限の緩和:ループが発生していないか監視するために、Power Automateの実行履歴を管理者が確認できるようにしておくと安心です。
5. よくある質問(FAQ)
Q1. ループを停止する最も確実な方法は?
フローを無効化することです。ただし、フローが実行中でも無効化は即座に反映されます。その後、原因を修正してから再有効化します。
Q2. トリガー条件の「変更された列」に複数の列を指定できますか?
はい、カンマ区切りで複数の内部名を指定できます。例えば、「Status,AssignedTo,Priority」のようにします。
Q3. ループ防止のために、どのような列を追加すればよいですか?
「最終更新時刻」や「更新カウンター」のような列を追加し、フロー内でその列も更新することで、トリガー条件からその列を除外する方法があります。ただし、列の追加には管理者権限が必要です。
Q4. フロー内で「アイテムの作成」アクションを使う場合もループしますか?
はい、同じリストにアイテムを作成すると、その作成がトリガーとなりループする可能性があります。トリガー条件で作成時を除外するか、条件分岐で既存アイテムの場合のみ作成しないようにします。
6. まとめ
Power AutomateでSharePointリストの更新がループする問題は、主にトリガー条件の未設定とフロー内の自己更新が原因です。会社環境では、管理者権限やポリシーに注意しながら、以下の対策を実施します。
- トリガー条件で監視する列を限定する
- フロー内に条件分岐を追加して、値が実際に変わる場合のみ更新する
- ループ防止用の列を用意し、フロー内で更新する列をトリガーから除外する
- 緊急時はすぐにフローを無効化する
これらの設定により、想定外の繰り返しを防止し、安定した自動化を実現できます。不明な点は管理者に相談しながら、安全に再設定を行ってください。
ADVERTISEMENT
超解決 リモートワーク研究班
Microsoft 365の導入・保守を専門とするエンジニアグループ。通信障害やサインイン不具合など、ビジネスインフラのトラブル対応に精通しています。
Office・仕事術の人気記事ランキング
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【PDF】PDFのサムネイルプレビューが表示されない!エクスプローラーの設定とAcrobat環境設定
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
- 【PDF】結合するPDFの「用紙サイズ」がバラバラな時、すべてを「A4サイズ」に強制リサイズしてから結合する
