ADVERTISEMENT

【Power Automate】Apply to eachでつまずく時の実行履歴から原因を読む方法

【Power Automate】Apply to eachでつまずく時の実行履歴から原因を読む方法
🛡️ 超解決

Power Automateで繰り返し処理を行う際に欠かせない「Apply to each」アクションですが、想定通りに動かずに悩む方は少なくありません。ループ内で発生するエラーは特に原因が分かりにくく、修正に時間がかかってしまうケースが多く見られます。この記事では、実行履歴を使ってApply to eachの動作を一つずつ確認し、エラーの原因を特定する方法を解説します。実際の画面を見ながら進められるように具体例を交えているため、初めての方でも安心して読み進められます。

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

  • 最初に見る場所: フローの実行履歴から該当の実行を開き、Apply to eachアクションの出力とエラーメッセージを確認します。
  • 切り分けの軸: 原因は「入力データの構造」「同時実行制限」「アクションの構成」の3つに大別されます。履歴を見ながらどの軸に該当するかを判断します。
  • 注意点: 会社PCでApply to eachの同時実行数を変更する場合は、管理者に確認してください。また、大量データを扱う場合は、API制限やタイムアウトに注意が必要です。

ADVERTISEMENT

Apply to eachの基本とつまずきやすいポイント

Apply to eachは配列やコレクションの各要素に対してアクションを繰り返し実行するためのアクションです。例えば、メールの添付ファイルを一つずつ保存したり、SharePointのリストアイテムをループ処理したりする場面で使われます。しかし、想定したデータ構造と異なる入力が渡されたり、ループ内のアクションでエラーが発生したりすると、フロー全体が失敗します。特に初心者の方は、ループの動きを正しく理解していないために原因を見誤ることが多いです。

何が起こっているのかを理解する

Apply to eachは、入力として配列を受け取ります。配列の要素数だけループが繰り返され、各要素に対して中のアクションが実行されます。重要なのは、ループの各イテレーションは独立しているものの、同時実行数の制限があることです。デフォルトでは同時に最大50個のループが並行実行されます。また、ループ内でエラーが発生した場合、そのイテレーションだけが失敗し、他のイテレーションは続行される設定もあります。この動作を把握していないと、エラーが一部だけなのか全体なのかが判断できません。

よくあるエラーとその兆候

Apply to eachでよく発生するエラーとして、「Output array expected」(配列が必要)というメッセージがあります。これはApply to eachの入力に配列以外のデータ(文字列やオブジェクトなど)が渡された場合に表示されます。また、同時実行制限に達した場合の「The request was throttled」(要求が調整されました)というエラーも頻出です。さらに、ループ内で外部サービス(SharePointやOutlookなど)にアクセスする際の権限エラーも見逃せません。これらのエラーは実行履歴で詳細を確認できます。

実行履歴の見方

実行履歴は、フローがどのように実行されたかを時系列で確認できる強力なツールです。Apply to eachの問題を特定するには、以下の手順で履歴を確認します。

  1. Power Automateのポータルにアクセスし、該当のフローを開きます。
  2. 左側のメニューから「実行履歴」を選択し、問題が発生した実行をクリックします。
  3. 実行の詳細画面が開いたら、Apply to eachアクションを探してクリックします。
  4. アクションの「入力」と「出力」を確認します。入力が配列になっているか、意図したデータが含まれているかをチェックします。
  5. エラーが発生している場合は、「エラー」タブに詳細が表示されます。エラーメッセージとエラーコードを記録します。
  6. Apply to each内の各アクションを個別にクリックすると、イテレーションごとの結果が表示されます。ループが何回実行されたか、どのイテレーションでエラーが発生したかを確認できます。
状態 表示内容 意味
成功 緑色のチェックマーク アクションが正常に完了
失敗 赤色の×マーク アクション内でエラーが発生
スキップ グレー表示 条件などにより実行されなかった

失敗パターンと原因の読み解き方

実行履歴で見られる典型的な失敗パターンを3つ紹介します。それぞれの原因と対処法を押さえておきましょう。

Output array expectedエラー

このエラーは、Apply to eachの入力が配列ではないときに発生します。例えば、SharePointの「アイテムの取得」アクションの出力は単一のオブジェクト(配列ではない)ため、そのままApply to eachに渡すとエラーになります。正しくは、「次の値に適用」フィールドに配列を指定するか、必要に応じて「JSONの解析」アクションで配列に変換します。実行履歴でApply to eachの「入力」を確認すると、配列ではなくオブジェクトや文字列が表示されているはずです。

同時実行制限エラー

大量のアイテムをループする場合、APIの制限に引っかかることがあります。エラーメッセージに「Rate limit exceeded」や「Throttled」と表示されたら、Apply to eachの「同時実行の制御」設定を変更するか、ループ内に「遅延」アクションを挿入して調整します。ただし、同時実行数を上げすぎると他のフローに影響が出るため、管理者に相談しながら設定を変更してください。

テナント間の接続エラー

複数のテナントやアカウントをまたがってループ内でアクションを実行する場合、認証エラーが発生することがあります。例えば、ループ内で別のテナントのSharePointサイトにアクセスしようとすると、「Access denied」と表示されます。この場合は、接続の参照元を確認し、適切なサービスアカウントを使用する必要があります。実行履歴のエラーメッセージに「Unauthorized」や「Forbidden」と表示されたら、権限の問題を疑いましょう。

管理者へ確認すべきこと

Apply to eachのトラブルシューティングで管理者に確認が必要なケースがあります。以下の情報を整理してから問い合わせると、スムーズに解決できます。

  • 同時実行数の上限:テナント全体の制限や、フローごとの設定上限を確認します。変更が必要な場合は管理者に依頼します。
  • API制限:ループ内で使用しているコネクタのAPI呼び出し制限に達していないかを確認します。制限に達した場合、やり直しになるまで待つか、制限緩和を依頼します。
  • ライセンス:Apply to eachの高度な設定(同時実行制御など)を利用するには、適切なPower Automateライセンスが必要です。無償版では制限があるため、有償ライセンスへのアップグレードが必要かもしれません。

トラブルシューティングの手順

問題を特定するための具体的な手順をまとめました。以下の順序で確認することで、効率的に原因を絞り込めます。

  1. まず実行履歴を開き、Apply to eachアクションの「入力」を確認します。配列が正しく渡されているか、要素数は想定通りかをチェックします。
  2. 次に「出力」を確認します。ループが何回実行されたか、各イテレーションの結果が成功か失敗かを把握します。
  3. エラーが発生しているイテレーションをクリックし、詳細なエラーメッセージを確認します。メッセージ内のリソースIDやエラーコードをメモします。
  4. エラーメッセージを基に、該当するアクションの構成を見直します。例えば、SharePointの「ファイルの作成」アクションでエラーが出ているなら、アイテムのプロパティが正しいかを確認します。
  5. フローを編集し、問題を修正したら、テスト用のトリガーを使って再実行します。実行後、再度履歴を確認し、エラーが解消されたかを検証します。

よくある質問

Q1. Apply to eachの中でエラーが発生した場合、ループは停止しますか?

デフォルトの設定では、エラーが発生したイテレーションのみが失敗し、他のイテレーションは続行されます。ただし、アクションの「失敗時」の設定を「すべての続行を中止」に変更すると、ループ全体が停止します。どちらの動作が適切かは、業務要件に応じて選択してください。

Q2. Apply to eachの同時実行数を変更したいのですが、どこで設定できますか?

Apply to eachの設定画面で「同時実行の制御」をオンにすると、同時実行数を変更できます。デフォルトは50で、1から50の間で指定可能です。注意点として、同時実行数を増やすとAPIへの負荷が高まり、制限エラーが発生しやすくなります。また、テナント全体のポリシーで制限されている場合もあるため、管理者に確認してください。

Q3. 実行履歴にApply to eachのループ回数が表示されません。なぜですか?

ループ回数はApply to eachアクションの詳細画面で確認できます。アクションをクリックすると、上部に「実行回数」と表示され、各イテレーションの結果がリスト形式で表示されます。もし表示されない場合は、ブラウザの再読み込みや別の実行を試してみてください。それでも表示されない場合は、フローの保存後に再度実行してください。

まとめ

Apply to eachでトラブルが発生した場合、実行履歴を丁寧に確認することが解決への近道です。入力データの構造、同時実行制限、アクション内の権限エラーという3つの軸で原因を切り分けることで、素早く対処できます。また、エラーメッセージを正確に読み取り、必要に応じて管理者に連絡することで、再発防止につなげられます。Power Automateのループ処理に不安がある方は、ぜひ今回の手順を試してみてください。繰り返しの確認で、より安定したフロー運用を実現しましょう。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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

ADVERTISEMENT