ヘッダーロゴ

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

Google apps scriptでfor loopを使って繰返し処理をする方法をご紹介します。

この記事は以下の人にオススメです。

  • GASでfor loopの使い方を理解したい人
  • GASで繰り返し処理をしたい人
  • GASで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で。

繰り返し処理するシート範囲を変数宣言で格納

スプレッドシート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();

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

最終行を取得

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

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

getLastRow()

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

引用:getLastRowメソッド

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

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

アヒルン
ここでループ処理する回数を決めるんだね。
うちゅうじん
YES。注意点があるので述べとく

Google apps scriptでは列指定した最終行の取得は、現状不可。そのためシート全体の最終行を取得しています。(間違ってたらすみません)

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をかける方法

次のページへ >

  • この記事を書いた人
  • 最新記事

OYAKUN

30代半ば♂妻・子3人の5人で日々激戦中。Google app script&VBA初心者が自分の備忘録を兼ねて「スプレッドシート、Excel、WordPress、plugin」の設定等、主にブログやアフィリエイト周辺のtipsを背伸びしながらご紹介しています。

© 2021 OYAKUDACHI.XYZ