Power Automateの「それぞれに適用する」の使い方|並列化で高速化・入れ子・途中で抜ける方法
はじめに
Power Automate で複数件のデータを 1 件ずつ処理するときに登場するのが「それぞれに適用する」(Apply to each)です。配列を扱う動的コンテンツを選ぶと自動で挿入されるため、意図せず出てきて戸惑った人も多いはず。さらに「件数が多いと遅い」「入れ子にしたい」「途中で抜けたい」といった悩みもつきものです。
本記事では、「それぞれに適用する」の基本から、並列化による高速化(実測で 20 秒 → 3 秒)、入れ子ループ、そして「途中で抜けたい」に対する現実的な答えまでを、実際の画面つきで解説します。
- 「それぞれに適用する」が勝手に出てくる理由と仕組みを知りたい
- 件数が多くてフローが遅い。並列化で速くしたい
- 入れ子ループや「途中で抜ける」方法を知りたい
Power Automate の基本・料金・他の実例一覧はこちら。

「それぞれに適用する」は自動で挿入される
「それぞれに適用する」は、多くの場合自分で追加しなくても自動で挿入されます。単一の値を入れる欄に、配列(複数件)の動的コンテンツを指定すると、Power Automate が「これは 1 件ずつ処理する必要がある」と判断し、そのアクションを自動でループの中に入れてくれるのです。
下は「作成」アクションの入力欄に、配列の要素(氏名)を挿入する直前の状態です。

挿入を確定した瞬間、「For each」コンテナが自動生成され、「作成」がその内側に移動しました。これが「知らないうちにループが出てくる」正体です。

正式名称は「それぞれに適用する」=キャンバスでは「For each」
自分で追加したい場合は、アクション検索で「それぞれに適用する」(コントロール カテゴリ)を選びます。少しややこしいのですが、追加後のキャンバス上のノード名は英語で「For each」と表示されます(新デザイナーの表記ゆれ)。式の中で参照するときの内部名も For_each です。

ループの中で「今処理している 1 件」を参照するには items('For_each') を使います。Excel の行なら、列名を角カッコで指定して items('For_each')['氏名'] のように書きます(動的コンテンツから列トークンをクリックすれば自動でこの式が入ります)。
items('For_each')['氏名']![式エディタでitems('For_each')['氏名']を指定した画面](https://sananeblog.com/wp-content/uploads/2026/07/04-item-expression-editor.png)
実行後は、実行履歴でループの反復を 1 件ずつ切り替えて確認できます(「1 / 15」のように現在の反復位置が表示されます)。

【本題】遅いループを並列化で高速化する
「それぞれに適用する」は既定で 1 件ずつ順番に処理します。そのため件数が増えるほど時間がかかります。ここでは 15 件のループ内に「遅延」(1 秒)を入れて、わざと時間がかかる状態を作りました。既定(順次)だと ループ全体で 20 秒かかっています。

これを速くするのが並列化です。「それぞれに適用する」の右上メニュー →「設定」→「同時実行制御」をオンにします。「並列処理の次数」は既定で 20(これが最大値)です。

同じフローを並列(次数 20)で実行すると、20 秒だったループが 3 秒に短縮されました。約 6.7 倍の高速化です。

入れ子ループ(ループの中のループ)
「それぞれに適用する」は入れ子にできます。外側のループの中に、もう 1 つ「それぞれに適用する」を置くだけです。下は外側(社員 15 件)の中に、内側(1, 2, 3 の 3 件)を入れた構成です。

入れ子で気をつけるのは要素の参照方法です。内側のループ自身の要素は引数なしの item()、外側のループの要素は items('For_each') で参照します。両方を組み合わせると、次のように外側×内側の値を作れます。
concat(items('For_each')['氏名'], '-', string(item()))実行すると 佐藤 明日香-1 のように、外側の氏名と内側の番号が正しく組み合わさります。

「途中で抜けたい」への答え:先に絞り込む
プログラミングの break のように「ループを途中で抜ける」機能は、「それぞれに適用する」にはありません。代わりに現実的なのは、ループに入れる前に対象を絞り込んでおくという発想です。これに使うのが「アレイのフィルター処理」(データ操作カテゴリ)です。
「アレイのフィルター処理」を「それぞれに適用する」の前に置き、条件(例:部署 が 経理部 に等しい)を指定します。

ループの入力を、フィルター処理の出力に差し替えて実行すると、15 件あった対象が 1 件に絞り込まれ、ループも「1 / 1」= 1 回だけの実行になりました。無駄な反復を回さずに済みます。

対象が 0 件でもエラーにならない
「フィルターの結果が 0 件だったらエラーになるのでは?」と不安になりますが、その心配は不要です。空の配列を渡しても「それぞれに適用する」はエラーにならず、0 回スキップして成功します。存在しない条件で絞り込んで 0 件にしても、フローは緑チェックで完了しました。

まとめ
「それぞれに適用する」(Apply to each)のポイントを整理します。
- 配列を単一値欄に入れると自動でループ化される。 検索名は「それぞれに適用する」、キャンバス表示は「For each」
- 遅いなら並列化。 設定 → 同時実行制御をオン(次数 20 で実測 20 秒 → 3 秒)。ただし変数集計には使わない
- 入れ子は
item()(内側)とitems('名前')(外側)で使い分ける - 「途中で抜ける」は無い。 「アレイのフィルター処理」で先に絞り込む。0 件でもエラーにならない
ループでよく処理する Excel の行操作や、ループ内で使う日付の整形はこちらもどうぞ。





