GAS(Google Apps Script)とスプレッドシートを使った実装するとき、まず必要なのがGASでスプレッドシートを読み込むことですよね。
スプレッドシートの読み込みは数行のプログラムで完結しますが、同じことを実現するにはいくつかの方法(メソッド)があるので、今回はそれらの方法を網羅的に紹介しますね。
当記事では、
- GASにおけるスプレッドシートのオブジェクト構造
- スプレッドシートファイルの取得・読み込み方法
- シートの取得・読み込み方法
について解説します。
GASにおけるスプレッドシートのオブジェクト構造
GASでスプレッドシートを操作する際には、スプレッドシート内のオブジェクトの階層構造を理解する必要があります。
スプレッドシートのオブジェクトの階層構造は以下のようになっています。
- スプレッドシートファイル(spreadsheet)
- シート(sheet)
- セル範囲(range)・セル(cell)
- バリュー・値(value)
下位階層(バリュー・値など)を操作しようと思ったら、必ず上位階層のオブジェクトを生成・指定したからでないと操作できませんので、注意が必要です。
スプレッドシートファイルの取得・読み込み
スプレッドシートファイルの取得・読み込みの方法は大きく以下2種類の方法があります。
1つずつ、「var spreadsheet」という変数に格納しながら解説していきます。
getActiveSpreadsheetで現在のスプレッドシートを取得
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
これだけで、GASに紐付いているスプレッドシートファイルのオブジェクトが「spreadsheet」に格納されます。
openByIdでスプレッドシートのIDを指定して取得
var spreadsheet = SpreadsheetApp.openById('<キー>');
指定したキーのスプレッドシートファイルオブジェクトが「spreadsheet」に格納されます。
ちなみにキーは、URL(https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxx/edit)のxxxxxxxxxxxxxxxxの部分をコピペすればOKです。この値は1つのスプレッドシートファイル共通の値となります。
シートの取得・読み込み
シートの取得・読み込みの方法は大きく以下3種類の方法があります。
「spreadsheet」オブジェクトのスプレッドシートファイルを対象に、「var spreadsheet」という変数にシートオブジェクトを格納する方法を1つずつ解説していきます。
getActiveSheetで現在のシートを取得
var sheet = spreadsheet.getActiveSheet();
現在開いているシートのシートオブジェクトが「sheet」に格納されます。
getSheetByNameでシート名を指定して取得
var sheet = spreadsheet.getSheetByName('<シート名>');
指定したシート名のシートオブジェクトが「sheet」に格納されます。同じスプレッドシート内には同じシート名を作成できませんので、シート名が重複する心配はありません。
getSheets[n]でn番目のシートを取得
var sheet = spreadsheet.getSheets()[n];
変数nで指定した番号のシートオブジェクトが「sheet」に格納されます。
シート番号は左から、「0, 1, 2...」となっています。0から「始まっていることにだけ注意しましょう。
getSheetByIdメソッドは存在しない
ちなみにですが、「spreadsheet」オブジェクトにgetSheetByIdというメソッドは存在しません。
「spreadsheet」オブジェクトはIDで指定できるので、「sheet」オブジェクトもできそうなものですが、実際にコードを記述して実行してみても動かず、リファレンスにも同じような挙動をするメソッドは見当たりませんでした。
というわけで、「sheet」オブジェクトを生成するときには、ID指定以外の方法でシートを読み込むようにしましょう。
まとめ
今回は「GASにおけるスプレッドシートのオブジェクト構造」「スプレッドシートファイルの取得・読み込み方法」「シートの取得・読み込み方法」について解説しました。
スプレッドシートやシートのオブジェクトを生成するところからGAS×スプレッドシートのプログラムはスタートします。
今回紹介したコードはそのままコピペして使えるので、サクッとパクってコーディングにかかる時間を短縮していただけたら幸いです。
GASに関する記事はこれからもアップしていきますので、ぜひ参考にしてください。
では、また。