sheet オブジェクトを取得する方法はこちらをご参照ください。 http://qiita.com/negito6/items/c64a7a8589faaffcfdcf
本記事内のスクリプトで、 sheet
という変数は全て上記の方法で取得した「Spreadsheet の一つの sheet」 を表しています。
データ取得系
セルの番地を指定してデータを取得
var range = sheet.getRange("A1"); // A1 のところがセルの番地
var values = range.getValues();
var value = values[0][0];
range.getValues は、値を二重配列で取得します。
それは、明らかに単一のセルを指定しているときも同じです。
シートの全セルのデータを取得
var values = sheet.getDataRange().getValues();
- sheet.getDataRange は、値が入っている全てのセルを持つ Range オブジェクトを取得します
一番左列をキーにして、シートを連想配列にする
var values = sheet.getDataRange().getValues();
var data = {};
for (var i = 0, l = values.length; i < l; i++) {
var key = values[i].shift();
if (key.length > 0) {
data[key] = values[i];
}
}
例:シートが下記の状態の場合(一行目と1列目は、データではなく見出し)
A | B | C | D | |
---|---|---|---|---|
1 | 甲 | 21 | 160 | 55 |
2 | 乙 | 31 | 170 | 65 |
3 | 丙 | 41 | 180 | 75 |
data には下記の連想配列が入ります
{
"甲": [21, 160, 55],
"乙": [31, 170, 65],
"丙": [41, 180, 75]
}
データ更新系
シートを空白にする
sheet.clearContents();
たとえば他の function の組み合わせだと、下記のようにも書けます
sheet.getDataRange().setValue("");
- sheet.getDataRange は、値が入っている全てのセルを持つ Range オブジェクトを取得します
- range.setValue は、Range オブジェクトが指す全てのセルのデータに書き込みます
末尾に行を追加
sheet.appendRow([1, 2, 3, 4]); // 行のデータを配列で表現して渡す