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
記事一覧

ヒカリシステム株式会社 アシスタントマネジャー

法政大学経済学部を卒業後、2012年にヒカリシステム株式会社へ入社。

7年間にわたりパチンコホールの現場業務に従事。2019年よりDXチームへ異動し、AppSheetやLooker Studioを活用した勤怠管理システム、SFA(営業支援システム)、請求管理システムなどの内製化を主導。

現場の課題解決への貢献が評価され、2021年度に社長賞を受賞。

現場で培った経験を基に、テクノロジーを活用して業務効率化や課題解決を実現することに情熱を注いでいます。休日は音楽フェスに参加したり、ゲームをしたりしてリフレッシュしています。

保有資格:

Google AI Essentials
Google Prompting Essentials
ITパスポート

※この記事は、リサーチの一部に生成AIを活用し、最終的な分析・執筆・編集は木下慶太郎が責任を持って行っています。

関連記事