制御フロー(待機・くり返し)
制御ブロックは「待機」「反復処理」「反復中断」「反復スキップ」の 4 種類で、どのプランでも使えます。
待機
指定した時間だけ、次の処理に進むのを止めます。単位は「秒」「分」「時間」「日」から選べますが、1 回の待機は最大 25 秒です。それより長い値は通知なしで 25 秒に短縮されるため、長い間を作りたいときは「待機」を複数つないでください。
0 以下や数値として読めない値のときは、待機せずにそのまま次へ進みます。待機している時間も、コマンド 1 回の実行時間に数えられます。
反復処理(ループ)
「ループ本体」につないだ処理を、「繰り返し方」に従ってくり返します。くり返しが終わると(または「反復中断」で抜けると)「ループ後」へ進みます。「ループ本体」と「ループ後」は単独では削除できず、「反復処理」を削除するといっしょに消えます。
| 繰り返し方 | くり返す回数 |
|---|---|
| 「回数を指定」 | 「ループ回数」の値 |
| 「リストの各項目」 | 「繰り返すリスト」の項目数(「ループ回数」は使いません) |
どちらの繰り返し方でも、くり返しの上限はプランごとに決まっており(上限とクールダウン)、超える分は通知なしで打ち切られます。
ループ回数
- 未入力のときは 10 回です。変数も差し込めます。
- 0 以下や数値として読めない値のときは、「ループ本体」を一度も実行せず「ループ後」へ進みます。エラーにはなりません。
リストの各項目をくり返す
「繰り返すリスト」には次のどれかを書きます。
| 書き方 | 例 |
|---|---|
| 変数 1 つ | {BSVAR_bag} |
| 波括弧なしの変数名 | BSVAR_bag |
| 全体が 1 つの式 | ${ split({text}, ",") } |
「ループ本体」の中では、今の項目を {item}、その位置(0 から数えます)を {item_index} で参照できます。名前は「項目の変数名」で変えられ、空欄なら item です。項目はくり返しを始めた時点のリストから取り出すため、本体で同じ変数を書き換えても、くり返す項目は変わりません。
リストが空のとき、リストとして読めない書き方のとき、値がリストでない(変数が未定義のときを含みます)ときは、「ループ本体」を一度も実行せず「ループ後」だけを実行します。リストが空のとき以外は、ログに「繰り返す対象がリストではないため、ループ本体を実行しませんでした」と記録されます。ビルダーでも、リストが空・読めない書き方・配列型でない変数のときは警告が出ますが、保存はできます。
項目ごとにカスタム変数(BSVAR_)を書き換えると、1 回の実行で書き込める回数(50 回)を超えた分は書き込まれずに処理が続きます。
何回目かを参照する
「ループ変数名」で決めた名前を使うと、「ループ本体」の中で今が何回目かを差し込めます。どちらの繰り返し方でも使えます。
| 書き方 | 値 |
|---|---|
{ループ変数名.index} | 0 から数えた回数(0、1、2…) |
{ループ変数名.count} | 1 から数えた回数(1、2、3…) |
たとえばループ変数名が loop_1 なら、本文に {loop_1.count}回目の処理です と書けます。
ループ変数名と項目の変数名に使えるのは半角英数字とアンダースコアで、先頭は英字かアンダースコアです。それ以外の文字は取り除かれます。ループ変数名が空になると、ブロックごとに自動で名前が割り当てられます。
入れ子にしたループで内側と外側に同じ名前を使っても、内側が終わると外側の値は元に戻ります。
反復中断と反復スキップ
| ブロック | 動き | 「ループ後」の実行 |
|---|---|---|
| 「反復中断」(break) | くり返し全体をその場で終了します | 抜けた直後に 1 回実行されます |
| 「反復スキップ」(continue) | 今回の残りを飛ばし、次の回へ進みます | 1 回ごとには実行されず、すべての回が終わってから実行されます |
どちらも**「ループ本体」の配下でしか使えません**。配下に無いと保存時に検証エラーとなり、コマンドを保存できません。入れ子のループでは、もっとも内側のループに対して働きます。
上限
制御ブロックに関わる上限(待機時間・ループ回数・実行時間・ステップ数)は 上限とクールダウン にまとめています。上限を超えたときに表示されるメッセージは 表示されるメッセージ をご覧ください。
- ステップ数には、ループの中のブロックがくり返すたびに数えられます。回数の多いループにブロックを多数つなぐと、上限に達しやすくなります。
- ボタンや選択メニューでユーザーの操作を待つ処理をループの中に入れると、待っているあいだも実行時間に数えられます。反応待ちで上限を超えると、コマンドはタイムアウトします。
関連ページ
最終更新: