「Power AutomateのApply to each(For each)の使い方が知りたい」
「勝手にApply to eachが作られてしまうのはなぜ?」
「Do UntilとApply to eachの使い分けは?」
この記事では、
- Apply to eachとは
- Apply to eachの構成要素
- 利用場面
- 不要なApply to eachへの2つの対処法
を解説します。
Apply to eachは、「要素数だけ繰り返す」ためのアクションです。
自動で適用されますが、基本的にはそのまま利用して問題ありません。
Apply to eachを使わず、常に1件目だけを取得するための簡単な修正法もお伝えします。
この記事の監修者

監修者:ヒョウノモトハル
・1979年神奈川県生まれ
・大学卒業後、モラトリアム期間を経て会社員となる
・経理・総務・管理といったバックオフィスでの経験を積み、2016年から会社の情報システム部門へ転属
・その後2021年にキャリアの経験を活かし、Microsoft365関連の講座でUdemy講師としてデビュー
・2023年現在、受講生5万人を抱えるベストセラー講師となる
Apply to each(For each)とは
Apply to eachは、Power Automate内で使える繰り返し処理の1つです。
複数の値を持ちうる結果に対して、その数だけ処理を繰り返します。
終了条件を指定する必要がある「Do Until」よりも、簡単に繰り返しを実装可能です。
| アクション名 | 繰り返し条件 |
| Do Until | 指定した条件を満たすまで繰り返す |
| Apply to each | ある分だけ繰り返す |
なお、Apply to each とFor eachは名称が異なるだけで、同じものです。
Apply to eachの構成要素
Apply to eachを利用する際に必要となるものは2つです。
- 以前の手順から出力を選択
- 繰り返す処理
それぞれ簡単に解説します。
1.出力

まず、Apply to each で必須となるのは「出力」です。
「以前の手順から出力を選択」に、中身を取り出す内容(複数の値を持ちうる結果)を指定します。
わかりやすいのは配列です。
配列名を指定すれば、配列に格納されている要素の数だけ、繰り返し処理が行われるようになります。
2.繰り返す処理

2つ目の要素は、繰り返す処理内容です。
Apply to eachの中に追加したアクションが、繰り返し行われます。
この繰り返す処理の中で、「以前の手順から出力を選択」で指定した内容の中身を利用できます。
上記の画像では、「現在のアイテム」を列1に指定しています。
これは、以下を意味します。
1回目:配列の「0番目のアイテム」を列1へ
2回目:配列の「1番目のアイテム」を列1へ
…(配列の要素数だけ繰り返す)
Apply to eachの利用場面
どんな場面でApply to eachが使えるのか、具体例をお伝えします。
複数添付ファイルの取得
メール、SharePointなどの添付ファイルには、複数ファイルの添付が可能です。
添付ファイルの数だけ繰り返すよう、Apply to eachを活用すると、複数の添付ファイルに対応したフローが作成できます。
(SharePointの場合)

(参考リンク)
グループ宛のメール送信
Office365内に作成されたグループのメンバーにメールを送る場合もApply to eachを活用します。
「グループメンバーの一覧表示」アクションは、指定したグループのメンバー数分の結果を取得します。
Apply to each でメンバーの人数分だけ、処理(メールアドレスを配列に格納するなど)を繰り返し実行できます。

※上記の例ではこの後のフローで、メールアドレスを格納した配列をメール送信時のメールアドレスに指定しています。
グループ宛のメール送信については、以下の事例の「開発上の工夫点」の中で詳しく解説しています。
「開始して承認を待機」アクションの「承認者の電子メール」へのメール送信
「開始して承認を待機」アクションの承認者(担当者)は、複数人になる可能性があります。
動的なコンテンツの「回答数 承認者の電子メール」当てにメールを送る場合、承認者の数分繰り返すように、「回答数」に対してApply to eachが行われます。

配列の値を利用する
原始的ですが、もちろん配列の値の数だけ処理を繰り返したい場合にも、Apply to eachを活用できます。
以下、複数の値が入った「文字列の配列」の値の数だけ、Excelへの行追加を繰り返すフローです。

不要なApply to eachへの2つの対処法
Power Automateでは、複数の値を持つ可能性がある動的コンテンツを指定した場合、自動でApply to eachが挿入されます。
可能性があれば必ず適用されてしまい、実際に複数であるかどうかは関係ありません。
対処1:何もしない
まず前提として、自動挿入されたApply to eachをそのままにしても、動作に問題はありません。
Apply to eachは、対象が1件しか存在しない場合、1回だけ処理が行われ、繰り返さずに次の処理に移ります。
フローの見た目上気にならないのであれば、特に手を加える必要はありません。
対処2:修正する
- 常に1件だけ取得すれば問題ない
- フローの可読性が落ちるので、ムダなApply to eachは削除したい
このような場合、Apply to eachを削除することもできます。
ただし、修正の手間がかかり、対象が複数件ある場合(例:複数添付ファイル)であっても、1件しか取得せず、見落としが発生する可能性があります。
Apply to eachを回避する方法
Apply to eachが適用されてしまう場面で、常に先頭の1件だけ取得する方法をお伝えします。
SharePointの「複数の項目の取得」アクションを例に、お伝えします。
1.通常通りフローを作成する
まずは、Apply to each を使って、通常通りフローを作成します。
2.Apply to each(For each)の「以前の手順から出力を選択」をコピーし、編集

Apply to eachの「以前の手順から出力を選択」をコピーし、メモ帳などに貼り付けます。
@{outputs('複数の項目の取得')?['body/value']} |
@{}を削除し、代わりにfirst()で囲います。
| first(outputs(‘複数の項目の取得’)?[‘body/value’]) |
3.Apply to each内で利用している動的コンテンツをコピーし、編集
Apply to each 内で利用している 動的コンテンツをコピーし、メモ帳などに貼り付けます。
コピーするのは、「以前の手順から出力を選択」の中身を利用している動的コンテンツです。

複数ある場合は、それぞれ個別にコピーします。
@{items('For_each')?['Name']}@{items('For_each')?['ID']} |
@{}を削除し、「?」よりも前を消します。
?['Name']?['ID'] |
4.手順2と3を組み合わせて、最初の項目を取得する式を作成
4.手順2と3を組み合わせて、最初の項目を取得する式を作成
2で作成した式「first(outputs(‘複数の項目の取得’)?[‘body/value’])」の後ろに、3の式をつけると最初の項目を取得する式ができあがります。
first(outputs('複数の項目の取得')?['body/value'])?['Name']first(outputs('複数の項目の取得')?['body/value'])?['ID'] |
5.Apply to eachを削除し、作成した式を使って書き換える
後は、作成した式を使って、処理を記述すれば完成です。
簡易的に、先ほどの式を変数に格納してみます。

テスト結果です。
先頭データのname「佐藤」を取得できています。

(SharePointの添付ファイル取得の場合)
他のApply to eachであっても、手順は同じです。SharePointの添付ファイル取得を例に解説します。
1.フローを作成

2.Apply to eachの「以前の手順から出力を選択」をコピーし、メモ帳などに貼り付けます。
| @{body(‘添付ファイルの取得’)} |
@{}を削除し、代わりにfirst()で囲います。
| first(body(‘添付ファイルの取得’)) |
3.Apply to each 内で利用している 動的コンテンツをコピーし、メモ帳などに貼り付けます。

なお、「ID」で指定しているのはトリガーの値であり、「以前の手順から出力を選択」の値ではないのでコピーは不要です。
| @{item()?[‘Id’]} |
@{}を削除し、「?」よりも前を消します。
| ?[‘Id’] |
4.1と2を組み合わせて式を作ります。
| first(body(‘添付ファイルの取得’))?[‘Id’] |
5.Apply to eachを削除し、作成した式を使って書き換えます。
「添付ファイルのコンテンツの取得」アクションの「ファイル識別子」に、作成した式を入力します。

テスト結果です。1件目のファイルを取得できました。

Apply to each を削除し、フローを書き換えました。

「要素の数だけ繰り返す」でない場合はDo until
最後に、Do Untilとの使い分けについて解説します。
端的に言えば、「要素の数だけ繰り返す」でない場合(Apply to eachが使えない場合)に、Do untilを使いましょう。
自分で繰り返し条件を指定できるのが、Do untilの特長です。
例:
- 値が0以下になるまで繰り返す
- 特定の数(10回など)だけ繰り返す
- 変数の中身に@が含まれている間は繰り返す
基本的には、Apply to each を使える場面では、Apply to eachを活用すると良いでしょう。
「要素の数だけを繰り返す」フローを、Do Untillよりも簡単に実装できるからです。
Microsoft365の運用にお困りではありませんか?
株式会社uniteでは、Microsoft365のすべてのアプリを対象に、法人様向けの運用サポートを行っています。
- 社内メール⇒teamsへの円滑な移行と利用率UP施策
- SharePointのドキュメントライブラリを活用したファイル管理
- ExcelやAccessで作成された既存の社内ツールをPowerAppsへリニューアル
- 手作業で行っている業務をPowerAutomateで自動化
等、MS365を利用した業務改善のお手伝いをさせて頂いております。
ご予算、サポート範囲については完全オーダーメードでサポート対応をしておりますので、お気軽にご相談ください。
