【Google Apps Script入門】セルの取得・変更をする

Google Apps Scriptでスプレッドシートを操作する時に基本となるセルの取得と書き換えについて説明します。 【Google Apps Script入門】 第1回 Google Apps Scriptとは? 第2回 スクリプトエディタの基本操作 第3回 セルの取得・変更をする

スプレッドシートを操作する基本

Google Apps Scriptでセルを操作するには、以下のような手順が必要です。

  • 1. スプレッドシートのオブジェクトを取得
  • 2. シートのオブジェクトを取得
  • 3. セル範囲を指定したオブジェクトを取得
  • 4. オブジェクトの内容を取得・変更

セルを操作するサンプルコード

この手順をコードにすると以下のようになります。

function myFunction() {
  //1. 現在のスプレッドシートを取得
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  //2. 現在のシートを取得
  var sheet = spreadsheet.getActiveSheet();
  //3. 指定するセルの範囲(A1)を取得
  var range = sheet.getRange("A1");
  //4. 値を取得する
  var value = range.getValue();

  //ログに出力
  Logger.log(value);
}

次から、詳細について説明していきます。

セルを範囲で指定する

セルを取得するgetRange()は2つの構文があります。

セルを1つだけ取得する

getRange(range)
range [string] セルを1つだけ指定する

セルを範囲で取得する

getRange(row, column [, numrows [, numcolumns]])
row [int] 指定する範囲の行番号。
column [int] 指定する範囲の列番号。A列を1とする。
numrows [int] (省略可)範囲の行数を指定する。デフォルト1。
numcolumns [int] (省略可) 列数を指定する。デフォルト1。

サンプルコード

以下は、それぞれの構文と、範囲指定する場合のサンプルコードです。 列は、スプレッドシート上では、「A,B,C...」と続きますが、getRange()に引数(column)として渡す場合は、「1,2,3...」と数字にする必要があります。

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getActiveSheet();
  var range = sheet.getRange("A1");//セルA1を取得
  var range = sheet.getRange(1, 1);//セルA1を取得
  var range = sheet.getRange(1, 1, 3);//セルA1:A3を取得
  var range = sheet.getRange(1, 1, 3, 2);セルA1:B3を取得
}

セルの値を取得する

セルの値を取得するのは、getValue()とgetValues()の2つがあります。

指定された範囲の値を1つだけ取得

getValue()

指定された範囲にある最も左上にあるセルの値を取得します。返り値は、Number, Boolean, Date, Stringのいずれかで、セルが空の場合は空のStringとなります。 返り値 Object セルの値

指定された範囲の値を配列で取得

getValues()

指定された範囲の値を二次元配列で返します。返り値の型は、getValue()で同様です。また、getRange()では行・列が1から始まりますが、配列のインデックスは[0][0]から始まります。 返り値 Object[][] 指定範囲の値の二次元配列

サンプルコード

スプレッドシート 以下のようなスプレッドシートを例にします。A1~A3にそれぞれセル番号が振られています。 gas-3-2 コード セルA1~A3の3つのセルを範囲で取得します。getValue()とgetValues()それぞれの実行結果をログに残します。

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getActiveSheet();

   //セルA1:A3を取得
  var range = sheet.getRange(1, 1, 3);

  //getValue()
  Logger.log(range.getValue());
  //getValues()
  Logger.log(range.getValues());
}

実行結果 getValue()のほうはA1のみ、getValues()のほうは指定範囲の値が配列で返されます。 gas-3-1

セルの値を変更する

セルの値を変更するには、setValue()を使います。配列を挿入するsetValues()という関数もあるのですが今回は省略します。

値を変更する

setValue(value)
value [string] 変更後の値

サンプルコード

A1セルをgetRange()で取得し、setValue()で「変更後の値」にセルの内容を変更します。

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getActiveSheet();

  var range = sheet.getRange("A1").setValue("変更後の値");
}

以上で、セルの取得・変更の基本操作となります。