広告

Google apps scriptでfor loop|繰返し処理を3ステップで

2018年1月25日

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を呼び出し

あひる
あひる
ここで繰返し処理をしたい範囲を決めるってこと?
ううこ
ううこ
そ。

POINT!

ループ処理の範囲をセル位置で指定する場合は、

var rng = sht.getRange("A2:A11").getValues();

とすることで範囲指定できます。

STEP2. 最終行を取得

繰返し処理を最終行まで行いたいので、 getLastRowメソッド でシート1の最終行を取得します。

var lastRow
lastRow = sht.getLastRow()//最終行を取得

getLastRow()

コンテンツを持つ最後の行の位置を返します。

引用:getLastRowメソッド

  • lastRow・・シート1の最終行

ここで取得した値は、先にご紹介したfor文の「継続条件式」に使用します。

あひる
あひる
ここでループ処理する回数を決めるんだね。

ううこ
ううこ
YES。注意点があるので述べとく

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処理出来ました(^^)
あひる
あひる
でも参照する値が空白だった時に、◎を空白にするのってどうやればいいの?

ううこ
ううこ
それはifで条件分岐を使う。次ページで説明しよう

関連記事:Google apps script でfilterをかける方法

次のページへ >