Google apps scriptでfor loopを使って繰返し処理をする方法をご紹介します。
google Apps scriptを使って、
- for loopの使い方を理解したい
- 繰り返し処理をしたい
- for loopしながらifで条件分岐したい
といったニーズにお答えします!
Google apps scriptでfor loopを使って繰返し処理を行う3ステップ
冒頭GIFで使用したスクリプトはコチラ↓
/*繰り返し*/
function sample() {
var sheet,sht
sheet = SpreadsheetApp.getActiveSpreadsheet();
sht = sheet.getSheetByName('シート1');
var lastRow
lastRow = sht.getLastRow()
for (var i=2; i<=lastRow; i++)
{
sht.getRange(i, 3).setValue("◎")
}
}
for文の基本的な書き方
for(初期化式;継続条件式;増減式)
{
条件式がtrueの時に実行する繰り返し処理
}
初期化式
ループの前に行う処理の式。変数宣言して初期値を決める(例:var i=1)
継続条件式
ループを終えるための条件式。trueの間はループ、falseの場合はループ終了。
増減式
ループ処理の最後に毎々実行。カウンタ変数の値を(演算子で)増減させる式が一般的。
Google apps scriptとはいえ、基本的にはjavascriptのfor文の書き方を同じです。
ではGoogle apps scriptのfor文によるloop処理を3STEPで。
STEP1. 繰り返し処理するシート範囲を変数宣言で格納
スプレッドシートAppを呼び出して、繰返し処理したい対象のシートを変数へ格納します。
/*繰り返し*/
function sample() {
//変数
var sheet,sht
sheet = SpreadsheetApp.getActiveSpreadsheet();
sht = sheet.getSheetByName('シート1');
- sheet・・スプレッドシートappを呼び出し
- sht・・シート1を呼び出し
STEP2. 最終行を取得
繰返し処理を最終行まで行いたいので、
getLastRowメソッド
でシート1の最終行を取得します。
var lastRow
lastRow = sht.getLastRow()//最終行を取得
getLastRow()
コンテンツを持つ最後の行の位置を返します。
- lastRow・・シート1の最終行
ここで取得した値は、先にご紹介したfor文の「継続条件式」に使用します。
Google apps scriptでは列指定した最終行の取得は、現状不可。そのためシート全体の最終行を取得しています。(間違ってたらすみません)
STEP3. for文で繰り返し処理
最後にfor文で繰り返し処理を行っていきます。
for (var i=2; i<=lastRow; i++) //初期値は2,終了は最終行まで,+処理
{
sht.getRange(i, 3).setValue("◎")//繰り返す処理:i行、3列目に値◎を記入
}
}
先のfor文の書き方に当てはめて、
for(初期化式;継続条件式;増減式)
{
条件式がtrue時に実行する繰り返し処理
}
- 初期化式が2( i=2)
- 継続条件式が最終行まで(lastRow)
- 増減式はプラス(++)
- 繰返し処理の内容は「3列目i行まで◎を記入」
ここまでのコードを全て繋げると以下になるはず↓
/*繰り返し*/
function sample() {
var sheet,sht
sheet = SpreadsheetApp.getActiveSpreadsheet();
sht = sheet.getSheetByName('シート1');
var lastRow
lastRow = sht.getLastRow()
for (var i=2; i<=lastRow; i++)
{
sht.getRange(i, 3).setValue("◎")
}
}
実際に処理を行ってみると...
for文を使ってloop処理出来ました(^^)
POINT!
ループ処理の範囲をセル位置で指定する場合は、
とすることで範囲指定できます。