Edited at

Google Apps Script で Spreadsheet のセルのデータ操作についての備忘録

More than 3 years have passed since last update.

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]); // 行のデータを配列で表現して渡す