Power AutomateでApply to eachアクションを使うと、配列やテーブルの各要素に対して繰り返し処理を実行できます。しかし、場合によっては想定よりも多くの回数ループが発生し、フローの実行時間が延びたり、API呼び出し制限に引っかかったりすることがあります。その原因として、データソースの重複やロジックの誤りだけでなく、DLPポリシー(データ損失防止ポリシー)やライセンスの制約が影響しているケースが少なくありません。本記事では、Apply to eachの過剰な繰り返しに直面したときに、DLPポリシーとライセンスの観点から原因を切り分け、適切な対応を取るための手順を解説します。
【要点】この記事で確認すること
- 最初に見る場所: フローの実行履歴にあるApply to eachの反復回数と、各反復の入力データを確認します。
- 切り分けの軸: 端末(ユーザー操作)側、アカウント(ライセンス)側、管理者設定(DLPポリシー)側の3つに分けて原因を特定します。
- 注意点: DLPポリシーは管理者のみが変更できるため、自分で編集しようとせずにIT部門へ依頼してください。ライセンスのアップグレードも個人では判断せず、上司や管理者と相談します。
ADVERTISEMENT
Apply to eachが想定外に繰り返される主な原因
Apply to eachが本来のデータ数以上にループする原因は、ロジックのバグ以外にもいくつか存在します。ここでは特にDLPポリシーとライセンスに関連するものを挙げます。
1. DLPポリシーによるコネクタのブロック
組織のDLPポリシーによって、Apply to each内で使用しているコネクタ(例えばSharePointやSQL Serverなど)が制限されると、フローが想定外の動作を示すことがあります。具体的には、コネクタが「ビジネスデータのみ」グループに分類されていない場合、フロー内でそのコネクタが使用できず、代わりにエラーが発生してリトライが繰り返される、またはループ回数が増加する現象が起こります。DLPポリシーは管理者がPower Platform管理センターで設定しており、一般ユーザーは変更できません。
2. ライセンスに応じた実行制限と並列処理
Power Automateのライセンスによって、Apply to eachの並列実行数(コンカレンシー)や1回のフローあたりの最大アクション数が異なります。無償ライセンス(Office 365に含まれるもの)では、並列実行数が1(直列処理)に固定されるため、ループの完了までに時間がかかり、タイムアウトが発生してリトライされることがあります。また、有償ライセンスでもプランによって並列実行数の上限が異なり、設定値が大きすぎると想定外のスロットリングが発生し、結果的にフローが再実行されてループ回数が増える場合があります。
3. トリガー条件やデータソースの重複
DLPやライセンスとは別に、フローが複数回トリガーされている(例えば、ファイル作成トリガーで同じファイルが複数回検出される)ことや、Apply to eachの入力配列が重複したデータを含んでいることも、想定外の繰り返しの原因になります。しかし、本記事ではあくまでDLPとライセンスに焦点を当てます。
原因を切り分ける確認手順
以下の手順に沿って、DLPポリシーとライセンスの影響を確認してください。
- フローの実行履歴を確認する
Power Automateポータルで該当フローを開き、「実行」タブから最近の実行結果を開きます。Apply to eachアクションを展開し、「反復回数」と「入力」の値を確認します。想定よりも多い反復回数になっている場合、入力データに重複や余計な要素が含まれていないか検証します。 - 適用されているDLPポリシーを調査する
自分で確認できる場合、Power Platform管理センターの「データポリシー」セクションを見ます。ただし、多くの企業では一般ユーザーがアクセスできないため、管理者に問い合わせて、フローで使用しているコネクタがどのポリシーグループに属しているかを確認してもらいます。 - ライセンスの種類と制限を確認する
Microsoft 365管理センターまたはAzure ADで、自分のアカウントに割り当てられているPower Automateライセンスを確認します。無償ライセンス(Office 365 E3/E5に含まれる)か、有償のPower Automate Plan(Per userまたはPer flow)かによって、並列実行やAPI制限が異なります。 - Apply to eachの並列実行設定をチェックする
フローのApply to eachアクションの設定で、「同時実行数」がどのように設定されているか確認します。デフォルトは50(並列可能)ですが、無償ライセンスでは強制的に1になります。設定画面で「同時実行数を調整する」がオフの場合、ライセンスに依存します。 - テストフローで検証する
原因が特定できない場合、同じデータで最小限のApply to eachのみを含むテストフローを作成し、現象が再現するか確認します。再現しない場合、元のフローの他のアクションや条件が影響している可能性があります。
失敗パターンと判断基準
パターン1: DLPポリシーによるコネクタブロック
Apply to each内で使用しているコネクタが「ブロック」または「非ビジネス」グループに分類されていると、フロー実行時にエラーが発生し、リトライが繰り返されることがあります。特にSharePointやOutlookのコネクタが影響を受けやすいです。実行履歴のエラーメッセージに「DLP policy violation」と表示される場合、このパターンに該当します。
パターン2: 無償ライセンスによる並列制限とタイムアウトリトライ
無償ライセンスではApply to eachが直列実行(同時実行数1)となるため、大量のデータを処理する際にフローの実行時間が長くなり、30日間の実行制限やAPI呼び出し回数の上限に達することがあります。これによりフローが中断され、再実行時に同じデータが再処理されてループ回数が増えることがあります。
パターン3: 有償ライセンスでも並列実行数の設定誤り
有償ライセンス(Per userまたはPer flow)では、Apply to eachの並列実行数を最大50まで設定できますが、これを高く設定しすぎると、下位のAPI制限(例:1分あたり500回など)に引っかかり、スロットリングが発生してリトライが増えることがあります。
状況別比較表
| ライセンス / 環境 | Apply to eachの同時実行数 | フローあたりの最大アクション数 | DLPポリシーの影響 | 主な注意点 |
|---|---|---|---|---|
| Office 365 (無償) | 1 (固定) | 250/日 | あり(コネクタブロックでエラー) | 大量データ処理には不向き。遅延やタイムアウトに注意。 |
| Power Automate Per user | 1~50 (設定可能) | 5000/日 | あり(ブロックでエラー、ただし管理者調整可能) | 並列実行数を適切に設定しないとスロットリング発生。 |
| Power Automate Per flow | 1~50 (設定可能) | 制限なし(従量課金) | あり(ブロックでエラー) | コスト管理とDLPポリシーの調整が重要。 |
管理者へ確認すべき情報
DLPポリシーやライセンスの変更は管理者権限が必要です。以下の情報を整理して、IT部門やPower Platform管理者に相談してください。
- 発生している現象の詳細: どのフローで、どのApply to eachが何回ループしたか、実行IDやエラーメッセージ(DLP関連の文言)を添えます。
- 使用しているコネクタの一覧: Apply to each内で使っているコネクタ(SharePoint、SQL、Outlookなど)を列挙し、DLPポリシーでブロックされていないか確認を依頼します。
- 現在のライセンス情報: 自分のアカウントに割り当てられているPower Automateライセンスの種類を伝えます。必要に応じて、有償ライセンスへのアップグレードの検討を依頼します。
- Apply to eachの並列実行数の設定値: フローで設定している数字を伝え、適切かどうかアドバイスを求めます。
よくある質問(FAQ)
Q1. DLPポリシーが原因の場合、自分で回避する方法はありますか?
一般ユーザーはDLPポリシーを変更できません。管理者に連絡して、必要なコネクタを「ビジネスデータのみ」グループに追加してもらうか、フロー内で別のコネクタに置き換えることを検討してください。
Q2. 無償ライセンスでもApply to eachを大量データに使うには?
無償ライセンスでは処理できる量に限界があります。データを分割して複数のフローに分ける、または有償ライセンスへのアップグレードを検討してください。また、Apply to each内でフィルターアクションを使い、必要なデータだけを処理する方法もあります。
Q3. 並列実行数を上げたらエラーが増えました。なぜですか?
並列実行数を上げると、API呼び出しが同時に行われるため、制限(スロットリング)に達しやすくなります。使用しているサービスのAPI制限を確認し、並列実行数を下げるか、リトライポリシーを調整してください。
Q4. フローの実行履歴でエラーがないのにループ回数が多いのはなぜ?
エラーが表示されない場合、入力データ自体に重複が含まれている可能性があります。Apply to eachの前段で「Distinct」アクションを使って重複を除去する、またはデータソースのクエリで重複を排除することを検討してください。また、フローが複数回トリガーされていないか確認します。
まとめ
Apply to eachが想定外に繰り返される問題は、DLPポリシーによるコネクタのブロックやライセンスの制限が原因であることがあります。まずは実行履歴から反復回数とエラーメッセージを確認し、次にDLPポリシーとライセンスの状況を調べてください。管理者への相談時には、具体的な現象と使用コネクタの情報を整理して伝えるとスムーズです。並列実行数の設定やデータの重複排除など、自分で調整できる項目は先に対処することで、問題解決が早まります。適切なライセンスとポリシー設定により、Power Automateのパフォーマンスを最大限に引き出しましょう。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Office・仕事術の人気記事ランキング
- 【Outlook】添付ファイルが「Winmail.dat」に化ける!受信側が困らない送信設定
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Word】校閲機能の基本!赤字(変更履歴)とコメントで修正を見える化する
- 【PDF】PDFに入力した文字の「フォント・サイズ・色」を変更するプロパティ設定
- 【Copilot】「サービスに接続できません」エラーの原因切り分けと対処法
- 【PDF】PDFのサムネイルプレビューが表示されない!エクスプローラーの設定とAcrobat環境設定
- 【Excel】矢印キーで「セルが動かず画面がスクロールする」!ScrollLockの解除方法(ノートPC対応)
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
