Robotic Crowd

Robotic Crowd

繰り返し回数のカウント

Author: Asao Nakamura 282 views

この記事では、ループ内で繰り返し回数(ループ数)を取得する方法について紹介します。

【できるようになること】

  • Loopで繰り返し回数を取得する
  • ForEachで繰り返し回数を取得する
  • 取得した繰り返し回数
繰り返し回数(ループ数)を利用する場面

取得した繰り返し回数は、取得した時点における繰り返しが何回目かによって変動します。
Loopであれば、繰り返し1回目に取得した繰り返し回数は0、繰り返し2回目に取得した繰り返し回数は1となります。
このような繰り返し回数は、以下のように利用できます。

・スプレッドシートの書き込み開始行数
・一定回数以上繰り返さないようにするための条件式
・実行ログに詳細を残す

 Loopで繰り返し回数取得方法

Loop処理では、自動的に変数「i」が定義された状態になっています。

Loop内で利用するアクションのパラメータに、${i}と記載すると自動的にカウントアップを行ってくれます。

変数「i」の値は0からカウントを開始します。
つまり、繰り返し1回目の変数iの値は0, 繰り返し2回目の変数iの値は1,といった具合で、変数iには繰り返し1回ごとに1が加算されていきます。

# 繰り返し
+loop_1:
  loop>: 10
  _do:

    # テキストを作成
    +text_1:
      action>: Text
      text: ${i}

 ForEachでの繰り返し回数取得方法

ForEachで繰り返し回数を取得するためには、「繰り返し回数を格納する変数名(withIndex)」に任意の変数名を設定する必要があります。

この変数の値は、上述のLoopの${i}と全く同じ振る舞いをします。
よって、ForEach内部で繰り返し回数を取得する際には、ForEach内部のアクションのパラメータに${withIndexに指定した変数名}と記述します。

# 各要素について繰り返す
+for_each_1:
  for_each>:
    name: ["太郎","次郎","三郎"]
    withIndex: index
  _do:

    # テキストを作成
    +text_1:
      action>: Text
      text: ${index}

 繰り返し回数に任意の数値を加算する

繰り返し中に取得される回数は、上述の通り、Loop/ForEachの両方で、初回が0、2回目が1といった具合で固定されています。
これらの繰り返し回数に任意の数を加算したい場合、${iまたはwithIndexに指定した変数名 + 任意の半角数字}とすると数値を加算できます。

例えば、スプレッドシートに繰り返しで書き込みをする際に、A2セルから書き込みを開始させる場合、
書き込む範囲にシート名!A${i+2}と設定しておくと
1回目はA2、2回目はA3と指定範囲をカウントアップすることが可能です。

※Loopで変数iに2を加算する例

# 繰り返し
+loop_1:
  loop>: 10
  _do:

    # テキストを作成
    +text_1:
      action>: Text
      text: ${i + 2}

 応用:繰り返し用変数を個別に用意する

Loopの変数iと、ForEachのwithIndexパラメータ以外の変数に、繰り返し回数の役割を持たせることも可能です。

この方法では、繰り返し回数を格納する変数の初期値に0以外の値を指定できることに加え、繰り返し1回ごとに加算する数値も柔軟に調整できます。

方法は、以下になります。

  • ForEachの前に「StoreValue」アクションを設定します。
  • 変数名に、任意の名前を設定します。(num/rowNum/n/mなど)
  • 値には、カウント開始の数字を設定します。
  • ForEach範囲内の適切な位置に「StoreValue」アクションを設定します。
    ※ほとんどの場合、ForEachの一番最後です。
  • 変数名には、1.で設定した変数名と同じ名前を設定します。
  • 値には、${parseInt(変数名) + 1}と設定します。
 
# 変数に保存_2からカウントを始める
+store_value_1:
  action>: StoreValue
  key: n
  value: 2

# 各要素について繰り返す
+for_each_1:
  for_each>:
    row: ["test","test","test"]
  _do:

    # テキストを作成
    +text_1:
      action>: Text
      text: 'カウントは${n}です'

    # 変数に保存_変数nに1を加算する
    +store_value_2:
      action>: StoreValue
      key: n
      value: ${parseInt(n) + 1}
<ForEach>繰り返し/各要素を繰り返す/繰り返し回数

このページは役に立ちましたか?