めーたん
めーたん

[Loop]アクションと[For each]アクションのどちらを使えばいいの?

それぞれの特徴と違いを理解すれば使い分けられるようになるよ!

こさい
こさい
この記事でわかること
・[Loop]アクションと[For each]アクションの違い
・[Loop]アクションと[For each]アクションの使用例
検証バージョン
OS:Windows10
Power Automate for desktopバージョン:2.22

それでは、どうぞ!

LoopとFor eachの違いとは

[Loop]アクション

[Loop]アクションは反復(ループ)する回数がわかっているときに使います。

ループ数を格納する変数(ループインデックスと呼ぶ)が1から始まり、1つずつ増加されて、最終的に3になるまでループするには、下図のように設定します。

[Loop]アクションは何回ループするのかがわかっている必要があり、[開始値]と[終了]を設定しなければなりません。

ループインデックスは[生成された変数]に格納されるため、現在のループ回数がわかります。ループインデックスをループ中に利用することができます。

[For each]アクション

リストやデータテーブルのアイテム数分ループ処理を行うときは[For each]アクションを使用します。

リスト[List1]のアイテム数分ループ処理を行うときの設定は下図の通りです。

[For each]アクションは[Loop]アクションと違って何回ループするのか設定しなくていいという特徴があります。

[保存先]には[反復処理を行う値]で指定されたリストやデータテーブルの現在のアイテムが格納されます。

ループ処理内でリストやデータテーブルなどの現在のアイテムにアクセスできるので、ループ処理内の記述がシンプルになり、可読性が高まります

[Loop]アクションと違いループインデックスは自動では生成されません。[For each]アクションのループ中にループインデックス使用したい場合は、[変数の設定]アクションを使ってループインデックスを作成する必要があります

データテーブルのアイテム数分ループするフローで比較

もっと具体的に違いを認識するために、具体的なフローを示します。

データテーブルのアイテム数分ループするフローを[Loop]アクションを使った場合と、[For each]アクションを使った場合で比べてみます。

ループ処理するのはデータテーブル[DataTable]とします。このデータテーブルは[あたらしいデータテーブルを作成する]アクションを使って作成します。

データテーブル[DataTable]の列[Text]のアイテム(’A’、’B’、’C’、’D’、’E’)をメッセージボックスで表示するフローはそれぞれ次のようになります。

上記フローの2ステップ目の[Loop]アクションと[For each]アクションの設定ダイアログの違いを見てみましょう。[For each]アクションのほうがシンプルに設定できていますね。

[メッセージを表示]アクションの[表示するメッセージ]も見てみましょう。[Loop]アクションでは「%DataTable[LoopIndex – 1][1]%」、[For each]アクションでは「%CurrentItem[1]%」と設定しています。こちらも[For each]アクションのほうがシンプルに設定できていますね。

[Loop]アクションではデータテーブルの行と列を指定していますが、[For each]アクションではアイテムにアクセスできているため、列を指定するだけです。

まとめ

何回ループするかが明確であり、単純なループ処理を行いたい場合は[Loop]アクションを使いましょう。ループインデックスを使いたい場合も[Loop]アクションを使うと楽です。とくに「ループインデックスが偶数回の場合のみ実行する処理がある」場合は[増分]が使えます。

リストやデータテーブルのアイテム数分ループ処理を行って、アイテムにアクセスしたい場合は[For each]アクションが適しています。

データテーブルのアイテム数分ループするフローで比較」で示したように、[Loop]アクションを使ってデータテーブルのアイテム数分ループすることはできますが、[For each]アクションに比べると設定が煩雑です。

関連する記事

Power Automate for desktopの書籍を出版しています。