Power Automate Desktop(PAD)で繰り返し作業を自動化する際に欠かせないのが「反復処理(ループ処理)」です。ループを活用することで、リストやデータテーブルの処理、カウントダウン、繰り返し条件に応じた処理 などが可能になります。
この記事では、Loop文、While文、For Each文の基本と、カウントダウンの処理、ループの強制終了やスキップの方法 について詳しく解説します。
反復処理とは?
反復処理(ループ) とは、同じ処理を繰り返し実行するプログラムの仕組み です。
例えば、次のような場面で使えます。
- 10回メッセージを表示する
- リストの中のすべてのデータを処理する
- 特定の条件を満たすまで処理を続ける
- カウントダウンを行う
PADでは、以下の反復処理が用意されています。
| 反復処理の種類 | 特徴 |
|---|---|
| Loop文 | 指定した回数だけ繰り返す |
| While文 | 条件がTrueの間、繰り返す |
| For Each文 | リストやデータテーブルの各要素を処理する |
Loop文(指定回数のループ)
Loop文を使うと、指定した回数だけ繰り返し処理を実行 できます。
基本の使い方
- 「Loop」アクションを追加
- 繰り返す回数を指定(例:5回)
- ループ内に実行するアクションを追加(例:メッセージを表示)
Loop 5 回
メッセージを表示 ("ループ中: %LoopIndex%")
End Loop
ここで %LoopIndex% は、現在のループの回数を示します。(1回目なら1、2回目なら2…)
応用:10回メッセージを表示
Loop 10 回
メッセージを表示 ("%LoopIndex%回目の実行です")
End Loop
カウントダウンの反復処理
カウントダウンを行うには、変数を使って値を減らしながらループする 方法を使います。
カウントダウンの例(5から1まで)
変数 カウント = 5
Loop %カウント% > 0
メッセージを表示 ("カウントダウン: %カウント%")
変数 カウント = %カウント% - 1
End Loop
この処理では、カウントが 5→4→3→2→1 と減り、最終的に0になるとループが終了します。
強制終了、スキップ、実行遅延
ループ内の処理を途中で変更するために、以下の操作ができます。
| アクション | 説明 |
|---|---|
| Break(強制終了) | ループを途中で終了する |
| Continue(スキップ) | ループの次の繰り返しへ進む |
| 実行遅延(Wait) | 一定時間待機する |
Break(ループの強制終了)
特定の条件を満たしたらループを終了する方法です。
例:3回目でループを終了
Loop 10 回
If %LoopIndex% = 3 Then
Break
End If
メッセージを表示 ("%LoopIndex%回目の処理")
End Loop
→ 1, 2, 3回目の処理後に終了。
Continue(スキップ)
特定の条件を満たした場合、ループの残りの処理をスキップし、次の繰り返しに進む ことができます。
例:偶数回のみ処理をスキップ
Loop 5 回
If %LoopIndex% Mod 2 = 0 Then
Continue
End If
メッセージを表示 ("%LoopIndex% は奇数です")
End Loop
→ 偶数(2, 4)はスキップ され、1, 3, 5 の時のみメッセージが表示されます。
実行遅延(Wait)
ループ処理の間に 一定時間待機する ことで、負荷を軽減できます。
例:毎秒カウントダウン
plaintextコピーする編集する変数 カウント = 5
Loop %カウント% > 0
メッセージを表示 ("カウントダウン: %カウント%")
実行遅延 1000 ミリ秒
変数 カウント = %カウント% - 1
End Loop
→ 1秒ごとにカウントダウンが進む ようになります。
While文(条件がTrueの間、繰り返す)
While文は 「条件がTrueの間、ループを繰り返す」 仕組みです。
基本の使い方
変数 X = 1
While %X% <= 5
メッセージを表示 ("Xの値: %X%")
変数 X = %X% + 1
End While
→ Xが1から5になるまで処理を繰り返します。
For Each文(リストやデータテーブルの処理)
リストやデータテーブルの各要素に対して、繰り返し処理を行う場合に使用します。
リストの各要素を処理
リスト MyList = ["りんご", "みかん", "ぶどう"]
For Each %アイテム% in %MyList%
メッセージを表示 ("現在のアイテム: %アイテム%")
End For Each
→ リストの中の「りんご」「みかん」「ぶどう」を順番に処理します。
データテーブルの各行を処理
データテーブル SalesData = [ [ "田中", 1000 ], [ "佐藤", 2000 ], [ "鈴木", 3000 ] ]
For Each %行% in %SalesData.Rows%
メッセージを表示 ("名前: %行["名前"]%、売上: %行["売上"]%")
End For Each
→ データテーブルの各行の「名前」と「売上」を取得します。
よくある質問(FAQ)
Q1. Loop文とWhile文の違いは?
A. Loop文 は 「指定回数」繰り返す のに対し、While文 は 「条件がTrueの間」繰り返す という違いがあります。
| 種類 | 繰り返し条件 | 使いどころ |
|---|---|---|
| Loop文 | 決められた回数だけ繰り返す | 10回処理したい場合 |
| While文 | 条件がTrueの間、無限に繰り返す | ユーザーが「OK」を押すまで処理を続ける場合 |
例:Loop文(10回繰り返す)
Loop 10 回
メッセージを表示 ("%LoopIndex%回目の処理")
End Loop
例:While文(Xが5以上になるまで繰り返す)
変数 X = 1
While %X% <= 5
メッセージを表示 ("Xの値: %X%")
変数 X = %X% + 1
End While
Q2. For Each文はどんなときに使う?
A. リストやデータテーブルの各要素を順番に処理する場合 に使います。
例:リストの要素を1つずつ処理
リスト MyList = ["りんご", "みかん", "ぶどう"]
For Each %アイテム% in %MyList%
メッセージを表示 ("現在のアイテム: %アイテム%")
End For Each
このフローでは、「りんご」「みかん」「ぶどう」を順番に処理します。
Q3. ループの回数を途中で変更することはできる?
A. 可能ですが、変数を使って制御する必要があります。
例えば、「ユーザーが途中でキャンセルを押したらループを終了する」場合:
Loop 10 回
変数 ユーザーの選択 = メッセージを表示 ("続けますか?", [OK, キャンセル])
If %ユーザーの選択% = "キャンセル" Then
Break
End If
メッセージを表示 ("%LoopIndex%回目の処理")
End Loop
→ ユーザーが「キャンセル」を押すと、ループを途中で終了します。
Q4. ループの途中でスキップ(Continue)を使う場面は?
A. 特定の条件を満たした場合に、その回の処理を飛ばして次のループに進みたいとき に使います。
例:偶数の回だけスキップ
Loop 5 回
If %LoopIndex% Mod 2 = 0 Then
Continue
End If
メッセージを表示 ("%LoopIndex% は奇数です")
End Loop
→ 2, 4の時はスキップされ、1, 3, 5の時だけメッセージが表示 されます。
Q5. カウントダウンをする最適な方法は?
A. While文を使うのが最も簡単です。
変数 カウント = 5
While %カウント% > 0
メッセージを表示 ("カウントダウン: %カウント%")
変数 カウント = %カウント% - 1
End While
→ カウントが「5→4→3→2→1」と減少し、0になると終了します。
Q6. ループの中に遅延(Wait)を入れるメリットは?
A. ループの処理を一定時間待機 させることで、システム負荷を軽減 したり、ユーザー操作の待機時間を作る ことができます。
例:1秒ごとにカウントダウン
変数 カウント = 5
While %カウント% > 0
メッセージを表示 ("カウントダウン: %カウント%")
実行遅延 1000 ミリ秒
変数 カウント = %カウント% - 1
End While
→ 1秒ごとにメッセージが表示 されるようになります。
Q7. LoopIndexはどこで使える?
A. LoopIndexは、Loop文の中で現在のループ回数を表す自動変数 です。
Loop 5 回
メッセージを表示 ("現在 %LoopIndex% 回目の実行です")
End Loop
→ 「現在1回目」「現在2回目」…と、回数が表示されます。
Q8. ループが終わらない(無限ループ)を防ぐ方法は?
A. While文を使う場合、ループが必ず終了する条件を設定する ことが大切です。
❌ 無限ループの例(変数が増えない)
変数 X = 1
While %X% > 0
メッセージを表示 ("Xの値: %X%")
End While
このままだと Xが変化しないため、永遠にループが続く ので注意が必要です。
✅ 正しい方法(Xを増やして終了条件を満たす)
変数 X = 1
While %X% < 5
メッセージを表示 ("Xの値: %X%")
変数 X = %X% + 1
End While
→ Xが5になったらループが終了する ので、無限ループを防げます。
