Google Apps Script(GAS)入門 スプレッドシートのセル取得・書き込み方法(getValue,setValue)

2020年3月20日

Google Apps Script(GAS)でスプレッドシートのセルの数値・文字を取得する方法と、GASスクリプトで処理した値をセルに書き込む方法について解説します。

GASによる様々なセルの値の取得方法と書き込み方法を紹介していきます。

スプレッドシートとシートの読み込み方法

Google Apps Script(GAS)でスプレッドシートのセルの値を取得や書き込むためには、事前にスプレッドシートとシートの読み込みが必要です。

GASのスクリプトでスプレッドシート+シートを読み込む方法について、それぞれ下記の記事で解説しています。

Google Apps Scriptでスプレッドシートを読み込む方法

Google Apps Script(GAS)入門 スプレッドシートを取得・読み込む3種類の方法を解説

Google Apps Scriptでスプレッドシートのシートを読み込む方法

Google Apps Script(GAS)でスプレッドシートのシートを読み込む方法

まず、スプレッドシートを読み込み、さらに取得したいセルがあるシートの読み込みが事前準備として必要になります。

今回、サンプルのスプレッドシートを使って説明したいと思います。

Google Apps Script(GAS)でセルを取得・書き込むスプレッドシート

スプレッドシートのセルの範囲を指定する

Google Apps Script(GAS)でスプレッドシートのシートにあるセルの値を取得・書き込む前に、対象のセルの範囲を指定する必要があります。

セルの範囲指定するためには、sheetクラスで定義されているgetRange()メソッドを使います。

GASのgetRangeメソッドには引数の指定方法が4種類あります。

  1. getRange(Integer row, Integer column)
  2. getRange(Integer row, Integer column, Integer numRows)
  3. getRange(Integer row, Integer column, Integer numRows, Integer numColumns)
  4. getRange(String a1Notation)

スプレッドシートのセルの範囲を指定するメソッドgetRangeの引数は4種類

①getRange(Integer row, Integer column)

1つ目のgetRange(Integer row, Integer column)は、2つの引数を指定し、変数row:行番号と変数column:列番号を指定します。

sheet.getRange(2, 1)

2行目の1列目のセル(A2セル)を1つ指定していることを表しています。

Google Apps Script(GAS)のメソッドgetRangeに2つの引数で単一のセルを指定

この場合は単一のセルを指定することになります。

②getRange(Integer row, Integer column, Integer numRows)

getRange(Integer row, Integer column, Integer numRows)では、①つ目のgetRangeにnumRowsという引数が追加されています。

rowとcolumnに加え、変数numRows:行数を指定します。

sheet.getRange(2, 1, 5)

2行1列目から6行1列目(A2:6セル)を指定することを表しています。

Google Apps Script(GAS)のメソッドgetRangeに3つの引数で複数のセルを範囲指定

この場合は複数のセル範囲が指定されることになります。

③getRange(Integer row, Integer column, Integer numRows, Integer numColumns)

3つ目はさらにnumColumnsという引数が追加され、列数を指定します。

sheet.getRange(3, 2, 5, 3)

3行2列目から7行8列目(A2:C6セル)を指定することを表しています。

Google Apps Script(GAS)のメソッドgetRangeに4つの引数で複数のセルを範囲指定

この場合も複数の範囲が指定されることになります。

④getRange(String a1Notation)

最後のgetRangeメソッドは引数のタイプがString型と、今までのInteger型と異なっています。

R1C1形式はセル参照の方式の1つです。

  • R1C1=1行1列
  • R2C3=2行3列

上記のような「R*C*」という形式の文字列で引数に指定します。

sheet.getRange("R3C2")

上記のコマンドは、①と同じ3Bセルを意味しています。

セルを指定する際には①から④のどれを利用しても問題ありませんが、Integer型の変数を引数にする①~③がスクリプトでは使いやすいです。

GASで指定したセルの値を取得するメソッド

getRangeで指定したセルの値を取得するメソッドにはgetValueと、getValuesの2種類があります。

単一のセルを取得するgetValueメソッド

1つ目のgetValueメソッドは、読み込んだスプレッドシートの指定したシートにある単一のセルの値を取得します。

let data = sheet.getRange(3, 2).getValue();
Logger.log(data);

上記のサンプルコードの場合、3Bセルに指定された値を取得します。

Google Apps Script(GAS)のgetValueメソッドで取得した値をログ出力する

このように

②や③のような複数のセル範囲を指定したgetRangeの場合は、最初のセルの値が読み込まれます。

取得した内容に応じて変数の型が自動的に変化し、数値の場合はNumber型、文字列の場合はString型になります。

複数のセルを取得するgetValuesメソッド

先程のgetValueは1つのセルを取得しましたが、getValuesは複数のセルを取得するメソッドです。

範囲指定した複数セルの値を2次元配列で格納します。

let data = sheet.getRange(2, 2, 5, 3).getValues();
Logger.log(data);

今回の実行結果では、5✕3の2次元配列data[0][0]~data[4][2]に値が格納されます。

Google Apps Script(GAS)のgetValuesメソッドで複数セルを2次元配列で取得し、ログ出力

なお、引数が3つのsheet.getRange(2, 2, 5)の場合も1次元配列ではなく、2次元配列になります。

この場合は、data[0][0]~data[4][0]という2次元配列に格納されます。

このように単一のセルを取得する場合はgetValueメソッド、複数のセルを取得する場合はgetValuesメソッドで使い分けます。

指定したセルに値を書き込むメソッド

getRangeで指定したセルの値を書き込むメソッドにはgetValue同様に、setValueと、setValuesの2種類があります。

単一のセルに値を書き込むsetValue(Object value)メソッド

1つ目のsetValueメソッドは、特定の1つのセルに値を書き込みます。

sheet.getRange(3, 2).setValue(150);

この場合、B3セルの消しゴムの値段が70→150に変化します。

Google Apps Script(GAS)のsetValueメソッドでセルに値を書き込む

複数のセルに値を書き込むsetValues(Object[][] value)メソッド

2つ目のsetValuesメソッドは、複数のセルに引数に指定した2次元配列を書き込みます。

let data = [[100,10],[150,20],[200,30],[250,40],[300,50]];
sheet.getRange(3, 2, 5, 2).setValue(data);

getRangeメソッドで複数範囲を指定したセルに2次元配列の値を書き込みます。

Google Apps Script(GAS)のsetValuesメソッドで複数セルに2次元配列の値を書き込む

これまで紹介した通り、書き込みたい範囲に応じて2種類のメソッドを使い分けます。

  1. GASでシートの単一セルに書き込む場合はsetValue(data)
  2. GASでシートの複数のセルに書き込む場合はsetValues(data)

まとめ・終わりに

今回、Google Apps Script(GAS)でスプレッドシートのシートにあるセルの値を取得する方法と書き込む方法を紹介しました。

スプレッドシートのシートを読み込み後、getRangeメソッドでセルの範囲を指定します。

その後、getValue・getValuesメソッドでセルの値取得、setValue・setValuesメソッドでセルに書き込みます。

セルの読み込み・書き込みはGASでスプレッドシートを操作する上で必要不可欠な処理です。

特に複数のセル範囲を読み込み+書き込む、getValuesとsetValuesはGASのスクリプトでよく使うので、ぜひマスターしましょう。