LoginSignup
61
57

More than 3 years have passed since last update.

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

Last updated at Posted at 2016-04-16

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
57