チュートリアル1-4

2022年12月28日

繰り返し処理

繰り返しの処理を入れていきます。

WinGofeでは、ループ処理として

  • FOR文
  • WHILE文
  • DO-WHILE文

があり、ループの条件はすべて継続条件(条件を満たすとき実行)です。

FOR ~ NEXT

あらかじめループ回数が決まっている場合に使用します。処理を10回繰り返す場合の書き方は、以下のようになります。

Ctrl入力オプション
FORカウンター:^i、開始値:1、終了値:10、STEP:1
(実行させたい処理)
NEXT
  1. 最初にFORに来たときに、カウンター変数「^i」に開始値「1」が代入されます。
  2. FORの条件判定:カウンター「^i」が、開始値「1」から終了値「10」までの間 ⇒ TRUE
  3. FOR内の処理実行
  4. NEXTに来ると、カレント行がFORに戻ります。
  5. FORに戻り、カウンター「^i」にSTEPで指定した数「1」を加算 ⇒ ^i=2
  6. FORの条件判定 ⇒ TRUE

「^i」が10になるまで10回繰り返され、NEXTで「^i=11」となると、FOR文の条件を満たさなくなり、ループから脱出します。

WHILE ~ WEND(前判定ループ)

条件が真の間、処理を繰り返します。上記のFOR文の内容をWHILE文で表すと以下のようになります。

CtrlIOTYPE変数入力オプション
INNUM:SUBSTITUTE変数名:^i、代入式:1
WHILE条件:<=、変数名:^i、比較値:10
(実行させたい処理)
INNUM:SUBSTITUTE[代入式:^i]変数名:^i、代入式:^i+1
WEND
  • あらかじめ、数値変数「^i」に初期値「1」を代入します。
  • WHILEでは、「^i」が10以下の間、処理を繰り返します。
  • WENDまでの間に「^i」に「1」を加算しておきます。
  • WENDに到達すると、WHILEに戻り、条件を判定します。

FOR文と比べると、「^i」の初期化と、「1」を加算する処理が必要です。
しかしWHILE文は、

  • あらかじめループの回数が分かっていなくて、ループ内の実行結果で条件が決まるようなケース
    (例:テーブルの行を順番に取り込み、最終行になったら処理を終了)
  • 数値以外にも複雑な条件を書くことができる

メリットがあります。

WSTART ~ DO-WHILE(後判定ループ)

条件が真の間、処理を繰り返すのはWHILE文と同じですが、最初の1回目は必ず処理を実行し、処理の最後に条件判定をします。処理を10回繰り返す場合の書き方は、以下のようになります。

CtrlIOTYPE変数入力オプション
INNUM:SUBSTITUTE変数名:^i、代入式:1
WSTART
(実行させたい処理)
INNUM:SUBSTITUTE[代入式:^i]変数名:^i、代入式:^i+1
DO-WHILE条件:<=、変数名:^i、比較値:11
  • あらかじめ、数値変数「^i」に初期値「1」を代入します。
  • WSTARTはそのまま通過するので、最初の1回目は必ず実行されます。
  • DO-WHILEまでの間に「^i」に「1」を加算しておきます。
  • DO-WHILEに到達すると、条件を判定してTRUEなら、WSTARTに戻ります。

WHILE(前判定)の場合は比較値が10でしたが、DO-WHILEでは^iに加算した後に条件判定を行うので、比較値は11となります。

無限ループに注意

例えば、次のように変数「^i」の加算処理を忘れた場合、WHILE文はいつまで経っても終了しません。

無限ループ

変数「^i」は「1」のままなので、WHILE文の条件を満たしたまま、永久にループすることになります。
処理が終了しなくなった場合は、操作タブのキャンセルボタンで終了してください。

正しいWHILE文

4行目に変数「^i」を加算する処理を追加します。

無限ループ回避

シナリオに繰り返し処理を追加

前回作成した操作シナリオにWHILE文を追加します。

WHILE条件

入力ExcelシートのA列にデータがある間、処理を繰り返すので、WHILE文の継続条件は

CtrlTYPE入力オプション
WHILECELL:CELL-VALUE条件:ブランクでないA^row
Gridシート3行目

となります。変数「^row」は行番号を表しています。
これを3行目に追加します。

行番号の加算

変数「^row」を加算する処理を14行目に追加します。

IOTYPE変数入力オプション
INVarNumeric:SUBSTITUTE代入式:^row変数名:^row、代入式:^row+1
Gridシート13行目
検索画面に戻す

1件目の操作終了時は、結果画面が表示されているので、2件目を入力できるよう、ブラウザの戻る機能で検索画面にバックします。

IOTYPE
INBrowser:BACK
Gridシート14件目
入力前クリア

戻った場合に、入力欄に前の値が残っているので、6行目のテキストボックス入力処理で、入力前にクリアするようにします。

IOTYPE変数XPath入力オプションFixed入力値
INTEXT入力値:^id//input[@id="label-f01"]入力前クリアTrue^id
Gridシート6行目
WHILE文を閉じる

WENDでWHILE文を閉じます。

Ctrl
WEND
Gridシート15行目

操作シナリオの実行

作成シナリオ

作成シナリオ

Gridシートの内容

シナリオ実行

操作タブの実行ボタンをクリック

2件目実行中

Excelシートの件数分(3件)処理して終了します。

Excel結果

Excelシート

まとめ

チュートリアル1では

  • Excelから値の入出力
  • ブラウザの入力、操作
  • 条件別の分岐(IF文)
  • 繰り返し処理(WHILE)
  • 変数の利用(文字型、数値型)

と、WinGofeの基本的な機能を学びました。