Google Apps Script(以下GAS)でSpreadSheetの読み込みから、範囲指定とデータの取得系の処理の基本を解説します。
- GASでSpreadSheetを扱う方法がわかる
- GASで自由にデータの範囲を指定したり、データを取得できるようになる
モグモグさん
公式のドキュメントはこちらにありますので、参考にしてください。
SpreadSheetからApps Scriptを開く
任意のSpreadSheetから、Apps Scriptを開きます。
エディタ画面が開けばOKです!
この記事では、わかりやすいようにこんな感じの値を追加したシートを用意しました。こちらをもとに解説していきます。
ワークブックとシートを指定し取得
お約束のコードでワークブックとシートを指定して取得します。
const activeSpreadSheet = SpreadsheetApp.getActiveSpreadsheet(); // 現在のSpreadSheetを取得
const sheet = activeSpreadSheet.getSheetByName('テスト'); // シート(SpreadSheetの下のタブ名を指定)
ワークブックとシートの指定の方法は複数あるので、気になる方はこちらの記事をどうぞ〜。
【GAS】Google Apps ScriptでSpreadSheetのワークブックを指定する方法を解説 【GAS】Google Apps ScriptでSpreadSheetのシートを指定する方法を解説
処理の基本の流れ
はじめに、処理の基本的な流れを簡単に解説しておきます。
- 対象の範囲を指定
- 単体のセルもしくは複数のセルの値を取得
対象の範囲の指定
データを取得する対象の範囲を指定します。
こちらは、その方法をケースに合わせて解説していきます。
単体のセルもしくは複数のセルの値を取得
値を取得するために使うメソッドは、getValues()
とgetValue
を使います。
getValue
選択した範囲1つのセルの値を取得します。
範囲が複数の場合は、左上の1つセルの値を取得します。
getValues
選択した範囲内の値を2次元配列で取得できます。
// getValuesで取得したデータの例(2次元配列)
[
[ 'A1', 'B1', 'C1', 'D1', 'E1' ],
[ 'A2', 'B2', 'C2', 'D2', 'E2' ],
[ 'A3', 'B3', 'C3', 'D3', 'E3' ]
]
モグモグさん
それでは具体的な方法を解説していきます!
全ての範囲からデータを取得
getDataRange()
はデータが存在する全ての範囲を取得します。
const data = sheet.getDataRange().getValues();
console.log(data);
// 以下実行結果
[ [ 'A1', 'B1', 'C1', 'D1', 'E1' ],
[ 'A2', 'B2', 'C2', 'D2', 'E2' ],
[ 'A3', 'B3', 'C3', 'D3', 'E3' ],
[ 'A4', 'B4', 'C4', 'D4', 'E4' ],
[ 'A5', 'B5', 'C5', 'D5', 'E5' ],
[ 'A6', 'B6', 'C6', 'D6', 'E6' ],
[ 'A7', 'B7', 'C7', 'D7', 'E7' ],
[ 'A8', 'B8', 'C8', 'D8', 'E8' ],
[ 'A9', 'B9', 'C9', 'D9', 'E9' ],
[ 'A10', 'B10', 'C10', 'D10', 'E10' ] ]
特定の範囲からデータを取得
getRange
というメソッドで範囲を指定できます。
モグモグさん
getRangeは非常に重要なのでこれの使い方を覚えればおおよそ基本はOKだと思います!
定義
getRange(row(行), column(列) , numrows(行数の範囲), numcolumns(列数の範囲))
// 補足
列のAやBは、「A => 1」になり、「B => 2」になります。
特定のセルを列と行の文字列で指定
getRange
に列と行の組み合わせを指定してセルを指定します。
const data = sheet.getRange("A1").getValue(); // A1
console.log(data);
// 以下実行結果
A1
特定のセルを数値で指定
getRange
に列番号と行番号を指定してセルを指定します。
const data = sheet.getRange(1, 2).getValue(); // B1
console.log(data);
// 以下実行結果
B1
特定の範囲を行数の範囲で指定
getRange
に列番号と行番号を指定して、さらに行方向の範囲も指定します。
const data = sheet.getRange(1, 2, 2).getValues(); // B1:B2
console.log(data);
// 以下実行結果
[ [ 'B1' ], [ 'B2' ] ]
特定の範囲を行数の範囲と列数の範囲で指定
getRange
に全ての引数を渡して列・行どちらも範囲を指定します。
const data = sheet.getRange(1, 2, 2, 2).getValues(); // B1:C2
console.log(data);
// 以下実行結果
[ [ 'B1', 'C1' ], [ 'B2', 'C2' ] ]
選択中の範囲の値を取得
あらかじめ範囲を指定するのではなく、対象のシートの選択した範囲の値を取得することもできます。
モグモグさん
範囲を指定した状態で下記のコードを実行してみてください!
const data = sheet.getActiveRange().getValues();
console.log(data);
選択中のセルの値を取得
モグモグさん
セルを指定した状態で下記のコードを実行してみてください!
const data = sheet.getCurrentCell().getValue();
console.log(data);
まとめ
ここまでで、GASでSpreadSheetを読み込んで範囲を指定し、値を取得する基本は理解できると思います。
特に、getRange
メソッドが使えれば自由に範囲を指定できますので、理解することをオススメします!