「ループ」アクションを使いこなす

Power Automate Desktop
「ループ」アクションを使いこなす

Power Automate DesktopなどのRPAツールは原則、ノーコードで利用できます。プログラミングができる必要はありません。とはいえ、パソコン上の機能なので、プログラミング的な要素をすべて排除できるかといえば、それは不可能な話です。プログラムの動作には「順次」「条件分岐」「繰り返し」の3つがあります。理論上、この3つでプログラムの全ての動きを説明できると言われています。ここではそのうちの1つ繰り返し処理を行うためのアクションである「ループ」について学んでいきます。「ループ」アクションは全部で5つあります。それぞれ1つずつ見ていきましょう。

(こちらは2022/6/24執筆時点での情報です。今後、選択可能なオプションが増える可能性があります。)

→「条件」アクションを学びたい方はこちら →RPAについての簡単な概要はこちら

1. 「For each」を使いこなす

「For each」はリスト変数など複数の値を持った要素をひとつずつ取り出し、処理を行う機能です。

例えば、上図のような例を考えてみましょう。ここではまず、1行目にNewVarという変数リストを設定し、そこに1, 2, 3, 4, 5の5つの数字を格納します。

「For each」アクションを左側のアクションメニューからドラッグ&ドロップすると以下の詳細があらわれます。今回はNewVarを反復処理させたいので、{x}という所をクリックして、選択してあげましょう。取り出した値はそれぞれCurrentItemという変数に格納されます。こちらは自由に名前を変更することができます。

保存をすると、以下のような部品が出てくるので、この間に繰り返したいアクションを入れてあげましょう。

例では「ファイル」というアクションメニュー下にある「テキストをファイルに書き込む」というアクションを挿入しています。

実行すると、CurrentItemを指定されたテキストファイルに「出力しました」という言葉を付け加えて書き込みます。以下のようなファイルが指定したフォルダの下に作成できていれば成功です。

2. 「Loop」を使いこなす

「Loop」は具体的な回数を指定して、反復処理を行う機能です。「For each」はリスト変数の値をひとつひとつ取り出す必要がありますが、「Loop」は反復回数を指定してあげる必要があります。また、「Loop」の場合は1つ飛ばしで繰り返すなど、繰り返し方を細かく設定できます。下図のような例を見てみましょう。

まずは「For each」の時と同様にリスト変数に1, 2, 3, 4, 5を格納します。次に「Loop」アクションを追加すると以下のようにパラメータを入力する詳細画面があらわれます。開始値からスタートして終了値で終わります。その間は増分ずつ増えていくという見方です。今回は開始値を0、終了値を{x}からNerVarリストの中の要素数を表すNewVar.Countから1を引いたもの、1ずつ増分させていきます。ここで、NewVar.Countから1を引いているのは開始値を0から始まっているので、NewVar.Countをそのまま代入すると、1回多くループさせてしまうからです。

またNewVar.Countの選択の仕方ですが、テキストボックスの右側にある{x}を押すとあらかじめ設定した変数を指定できますが、ここのNewVarをクリックすると.Countという項目があらわれて追加することができます。

保存ボタンを押すと以下の部品があらわれます。ここで出てくるLoopIndexは、文字通り繰り返しのインデックスのことです。今回で言うと0からNewVar.Count -1回分(4)繰り返していく中で、同じようにLoopIndexも0 から4に変化していきます。

「For each」と同じように繰り返したい命令をLoop部品の中に挿入します。今回は「For each」の時のようにCurrentItemという便利なものがないので、NewVar[LoopIndex]と入力することで、リストの値をそれぞれ取り出すようにしてあげます。

LoopIndexを0から始めた理由はここにあります。リストの中の要素は0から数えます。もしLoopIndexを1から始めて、NewVar.Countまでループさせようとすると、下図のよう範囲外ですというエラーになります。必ずではありませんが、コンピュータの世界では番号を数える時に0から始めることが多いので、慣れていきましょう。

うまく実行できると下図のように先ほどと同じ結果が出力されます。うまくできましたでしょうか。Loopはややこしいと思うかもしれませんが、飛ばし飛ばしで繰り返し処理をすることができたりと便利な点もあります。ぜひ、上手に活用できるようになってください。

3. 「ループを抜ける」を使いこなす

次は「ループを抜ける」処理について見ていきましょう。こちらは繰り返し処理の中で使われるアクションです。一度「ループを抜ける」アクションが実行されると、その後に配置されたいかなる命令も実行されずに処理が終了し、ループが終わった後の処理から再開されるというものです。では、具体的に例を見ながら使い方を見ていきましょう。

以下のフローを用意しました。やっていることはLoopのセクションで扱った事例に「if」のアクションを追加し、その中に「ループを抜ける」処理を追加したことです。

これを実行するとどうなるのでしょうか。「if」処理の条件がLoopIndexが3と等しい時なので、4個目のリストの値が出力された後に、処理が終了するはずです。LoopIndexは0から始まるので4個目ですね。実行結果は以下のようになります。うまくできたでしょうか。

4. 「ループ条件」を使いこなす

「For 次は「ループ条件」というアクションについて学習していきます。「ループ条件」は最初にループを続ける条件を追加して、その条件を満たす限り繰り返し処理を続けるをいうものです。実際に例を見て学習していきましょう。

下図のフローを見てください。1行目で1が格納された変数を設定します。2行目から5行目までが「ループ条件」です。今回は1行目で設定した変数が5にならない限りは繰り返し処理を実行し続けるというものになります。

では「ループ条件」アクションについて詳しく見ていきましょう。「ループ条件」を追加すると下図のような詳細画面が現われます。最初のオペランドというところで右側の{x}からNewVar変数を探して選択してあげましょう。演算子では「と等しくない(<>)」を選んでください。2番目のオペランドで6と記述したら保存して終了です。今回は条件に合致している間だけ繰り返し処理を行っています。なので、「と等しい(=)」を選択すると、最初NewVarは1の値が格納されているので、一度もループの中を処理せずに終了してしまいますね。

「保存」ボタンを押すと以下の部品が追加されます。この中に実行したいアクションを追加していきましょう。

今回、気をつけなくてはならないポイントが、以下のように「変数を大きくする」というアクションを追加して、NewVarが1ずつ大きくなるようにしている点です。もしこのアクションがないとNewVarはいつまでも1のままなので、ずっと処理が終了することなく永遠と作業を続けることになります。これは「無限ループ」と呼ばれます。コンピュータに負担をかけてしまうので、万一このような事態になっていることに気づいたら停止ボタンを押してすぐにRPAを停めてあげるようにしてください。

実行結果は下図のようになります。こちらも「For each」や「Loop」と同じ結果になりましたね。こちらは具体的な繰り返し回数が決まっていない処理を行いたい場合に便利な手法です。ぜひ使えるようになってくださいね。

5.「次のループ」を使いこなす

「For 最後に「次のループ」について学びましょう。こちらは繰り返し処理の中で使われるもので、「次のループ」アクションが実行されると、その回の繰り返し処理はその時点で終了し、次の回の繰り返し処理に移るというものです。実際に例を見ながら学習していきましょう。

フローは「ループ条件」で出した例の中に「if」アクションを追加し、その中に「次のループ」を追加しています。また、無限ループにならないように、変数の設定や変数を大きくする順番などを多少変更しています。

これを実行するとどうなるのでしょうか。「if」処理の条件がNewVarが3と等しい時なので、NewVarが3のときだけ、次のループが実行され、テキストファイルへの書き込みが行われないはずです。結果は以下のようになります。うまくできたでしょうか。

以上、ループについての解説でした。「For each」「Loop」「ループ条件」の3つは繰り返し処理を行うアクションそのもので、「ループを抜ける」と「次のループ」は繰り返し処理に細かい条件を付けたい時に利用されるものになります。これらを上手に活用して、どんどん業務を自動化していきましょう。

→他のPower Automate Desktop操作も知りたい方はこちら

執筆者プロフィール

伊藤 丈裕

(株)サムテックのシステムエンジニア。応用情報技術者資格保有。
27歳の時、営業から完全未経験で転職。開発とWebマーケティングを担当。得意言語はJavaとJavaScript。