はじめに
スプレッドシートの値をまとめて配列で取得したい時、「横(行)をまとめて取得したい」と思ったらよく解らなかったので覚書としてまとめておきます。
getRange("A2:2")で1行全部取得
一番簡単な方法は1行全部取得する方法です。
var row = 2;
var range = sheet.getRange("A"+row+":"+row);
var cells = range.getValues()[0];
2行目を指定すると、範囲が[A2:2]となり2行目のデータが全部取れます。
(getValues の返り値は2次元配列のため[0]のみ取得)
しかし、不要な範囲(何も入っていないセル)を大量に取得する事になるのはいただけないので必要な範囲を取得します。
getLastColumn()で列の最大値を得る
var lastColumn = sheet.getLastColumn();
これで現在のシートの列の最大値(値の入っているセルの範囲)が得られます。
ですが、これだと先程の指定方法[A2:2]は使えなくなるため別の方法を使います。
getRange(row,1,1,lastColumn)で1行中の指定範囲を取得
var range = sheet.getRange(row,1,1,lastColumn);
var cells = range.getValues()[0];
範囲の指定方法が全て数値指定(開始位置の行値,列値・そこからの範囲で行数,列数)になるので、lastColumn が使えるようになります。
終わりに
getRangeの中には、getRange(row,column,numRows) という引数のものがあり縦(列)をまとめて取得は簡単なのですが、横(行)をまとめて取得する場合わかりずらかったのでまとめてみました。