リストの各要素に対してループを実行する
[For each]アクションは、指定したリスト変数の各要素に対して、配下の処理を実行します。ループインデックスを直接使用しない場合は、同じループフローを[Loop]よりも簡潔にデザインできます。
以下では、上の例にある[Loop]アクションを[For each]アクションで置き換えてみましょう。
[1][For each]アクションを配置する
[Loop]アクションの前に[For each]アクションを配置します。
パラメーター選択が表示されるので、[反復処理を行う値]にリスト(%FileContents%)を指定します。これで、[For each] - [End]の内側のアクションで、現在のアイテムの変数[CurrentItem]を介して、値を参照できるようになります。
[For each]アクションでは、すべての要素についてループが実行されると、ループを終了します。
[2][Loop]アクションの内容を[For each]アクションに移動する
[Loop]アクション配下の処理を[For each]アクションの配下にドラッグ&ドロップします。また、いらなくなった[Loop]アクションを削除しておきましょう(アクションを選択したうえで[Delete]キーで削除できます)。
[3]「メッセージを表示アクション」を修正する
メッセージを表示アクションで[表示するメッセージ]を[%FileContents[LoopIndex]%]から[%CurrentItem%]に変更します。
以下は、完成したフロー図です。
[4]フローを実行する
サンプルを実行し、先ほどと同じ結果を得られることを確認しておきましょう。
条件が成り立つ間、処理を繰り返す
[ループ条件]アクションを利用することで、指定した条件が成り立つ間、内側に配置したフローを繰り返し実行することもできます。条件式を自由に設定できるので、[Loop]や[For each]よりも汎用的なループをデザインできるのが特徴です。
以下は、前項の内容を[ループ条件]アクションで書き換えた場合のフローです。
これまでの復習もかねて、自分でフローを編集してみましょう。[ループ条件]アクションでは、[LoopIndex]などが管理されないので、自分で管理する必要がある点に注意です。
[LoopIndex]を使用していますが、[変数を設定]アクション、[変数を大きくする]アクションで値を操作しなければなりません。最初の[変数を設定]アクションがない場合は変数[LoopIndex]は0から始まるので、このフローであれば問題は起きませんが、最初の値が0以外の場合は、明示的な設定が必要です。また、[変数を大きくする]アクションがないと、[LoopIndex]変数の値が変わらず、全く同じフローを繰り返してしまい、特別に[ループを抜ける]アクションを通らない限り、条件が成り立ち続けてループを抜けることができなくなってしまいます。
[ループ条件]アクションのパラメーター設定は、[If]アクションの場合と同じです。
これで「変数[LoopIndex]が[FileContents.Count]よりも小さい間だけ処理を繰り返す」という意味になります。サンプルを実行し、先ほどと同じ結果が得られることを確認してください。
今回は、[Loop]アクションと同じ内容を書き換えたため、[LoopIndex]を使用していますが、任意の条件を[ループ条件]アクションの[ループ条件]として設定できます。ただし、[ループ条件]が不成立になるか[ループを抜ける]アクションを通ることで、ループが終了されることを確認してください。
まとめ
今回はループ処理について説明しました。次回は、いくつかのアクション(ファイル、フォルダ―、Excel、Webオートメーション、テキスト)について紹介します。