どうも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行目に貼り付けがされます。
たまに忘れがちになるのでお気をつけください。
私だけかもしれませんが。