Google Apps Script(GAS)でfor…inを使った繰り返しの注意点

どうも3号です。
ブログを書いている今現在2021/12/24のクリスマスイブなのですが、
先程上司から「今日は夜通しぷよぷよ大会やるからな」と言われました。
誰か助けてください。

というわけで本題ですが、
配列の繰り返しでfor…inを使った繰り返しがあるかと思います。

var array = [ "a", "b", "c" ,"d" ];
for(var i in array){
var text = array[ i ]
Logger.log(text);
}



で、例えばこの値をスプレッドシートの1行目から順々に貼り付けたい場合は、

var spreadsheet = SpreadsheetApp.getActiveSheet();
var array = [ "a", "b", "c" ,"d" ];
for(var i in array){
var text = array[ i ];
Logger.log(text);
sheet.getRange(i+1,1).setValue(text);

}


というふうに書けばいいと思いきやなのですが、
これだと貼り付けされる行番号は1行目と11行目と21行目と31行目と41行目に貼付けされます。

なぜこんなことになるかというと、この場合のiが文字列扱いになっているからです。
なのでgetRange()の中にあるi+1は1+1で2になるのではなく文字列の結合になるので
“1”+1で11になります。

なので、これを避ける一番ラクな方法はiを数値形式に変える処理を加えるということです。
i = Number(i)をforの下に入れれば1〜4行目に貼り付けがされます。

たまに忘れがちになるのでお気をつけください。
私だけかもしれませんが。




木下 慶太郎

木下 慶太郎KINOSHITA KEITAROU

記事一覧

法政大学経済学部経済学科卒業後、現在のヒカリシステムに入社。

最近体重が人生のMAXに到達しました。

なので自転車通勤をはじめました。

でも、痩せません。助けてください。

関連記事