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

2020年3月16日

Google Apps Script(GAS)でスプレッドシートを読み込む方法には3つの方法が用意されています。

各々のスプレッドシートの取得メソッドの解説と、メリット・デメリットも併せて紹介したいと思います。

GASはスプレッドシートと組み合わせるケース多数

Google Apps Script(GAS)はGoogleの各種サービスの中で最もスプレッドシートと組み合わせて利用されます。

スプレッドシートはマイクロソフト・オフィスで言うところのエクセルであり、GASはマクロ(VBA)であると言えます。

スプレッドシートが表計算ツールとして持つ計算や関数だけでは実現できない処理を、GASのコードを記述して実現することができます。

そのため、他のGoogleサービスよりもスプレッドシートでGASが活用される事例がネット上にも多数掲載されています。

SpreadsheetAppクラスでスプレッドシートを操作

Google Apps Scriptでスプレッドシートを扱う際には、SpreadsheetAppクラスを利用します。

Google Apps Scriptと相性がよいスプレッドシート

SpreadsheetAppクラスはスプレッドシートの情報を取得したり、操作したりするために必要なメソッドが用意されています。

このSpreadsheetAppで定義されているメソッドを使用することで、GAS上でスプレッドシートを読み込み、セルの値を取得したり、書き込んだりとスプレッドシートの操作が可能です。

Google Apps Scriptでスプレッドシートを読み込む3つのメソッド

GASでスプレッドシートを読み込む際には以下の3つのメソッドが用意されています。

  1. getActiveSpreadsheet()
  2. openbyId(id)
  3. openbyUrl(url)

それぞれの読み込む方法について解説してきます。

getActiveSpreadsheet()

getActiveSpreadshhet()は現在、開いているアクティブなスプレッドシートを読み込むメソッドです。

let activeSheet = SpreadsheetApp.getActiveSheet();

このメソッドはスプレッドシートに紐づくコンテナバインド型のGASスクリプトでしか利用できません。

スプレッドシートに紐付いているため、特に引数を指定する必要なく、スプレッドシートを読み込むことができます。

Google Apps Scriptを利用する多くの場合、スプレッドシートに紐付いたコンテナバインドスクリプトのため、最も簡単にスプレッドシートを読み込むことができるのがメリットです。

ただし、その代わりスプレッドシートに紐付かないスタンドアロン型のGASではgetActiveSpreadsheet()メソッドは利用することができません。

openbyId(id)

openbyId(id)は引数に指定したidからスプレッドシートを読み込みます。

スプレッドシートをブラウザで開くと、URL欄には下図のような文字列が表示されています。

スプレッドシートを開いたURL欄にはスプレッドシートのIDが記載されている

この赤枠で囲まれた部分がスプレッドシートのIDで、世界中の人が利用しているGoogleスプレッドシートの中でユニーク(唯一)になっています。

let idSheet = SpreadsheetApp.openById("スプレッドシートのid※英数字");

このスプレッドシートのIDを引数にして、openbyIdメソッドでスプレッドシートを取得できます。

openbyIdメソッドはコンテナバインドでもスタンドアロンのどちらのスクリプトでも実行が可能です。

openbyUrl(url)

openbyUrl(url)は引数に指定したurlからスプレッドシートを読み込みます。

スプレッドシートをブラウザで開くと、URL欄には下図のような文字列が表示されています。

スプレッドシートのURLを確認し、openbyUrlメソッドの引数に指定する

httpsから始まるURLを引数にしてGASでスプレッドシートを取得します。

let urlSheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/【スプレッドシートのID】/edit#gid=0");

openbyIdと同様にコンテナバインドでもスタンドアロンでも利用可能なメソッドです。

openbyUrlのデメリットとして、openbyIdよりも引数の文字数が多いため、スクリプトの可読性が下がる点があります。

コンテナバインドとスタンドアロンで使い分け

スプレッドシートを読み込む3つの方法の使い分け方法としては、GASのスクリプトがコンテナバインドかスタンドアロンかで使い分けます。

スプレッドシートを読み込むGoogle Apps Script(GAS)の3つのメソッド

スプレッドシートの画面からスクリプトエディタを開くコンテナバインド型の場合は、getActiveSpreadsheetメソッドを使います。

※コンテナバインドでも紐付かないスプレッドシートを読み込みたい場合は、他の2つのメソッドを使います。

スプレッドシートに紐付かないスタンドアロン型GASスクリプトでは、getActiveSpreadsheetが使用不可なので、openbyIdかopenbyUrlのどちらかを利用します。

openbyIdとopenbyUrlは引数に指定するのが、スプレッドシートのIDかURLかの違いしかありません。

ただ、URLよりもIDのほうがシンプルであることに加え、GoogleDriveとしての1ファイルとしてスプレッドシートを開く場合にはID指定で読み込みます。

そうした読み込み方式を統一してコードの可読性を上げることを考慮すると、openbyIdを利用するのがオススメです。

まとめ・終わりに

今回、Google Apps Script(GAS)でスプレッドシートを読み込む際に、SpreadsheetAppクラスの3つのメソッドで取得する方法を紹介しました。

スプレッドシートに紐づくコンテナバインド型スクリプトの場合は、getActiveSpreadsheet()メソッドを使用するのがオススメです。

スプレッドシートに紐付かないスタンドアロン型スクリプトの場合は、openbyId(id)とopenbyUrl(url)を利用できますが、より少ない記述でコードが書けるopenbyId(id)がオススメです。

Google Apps Scriptではスプレッドシートで利用するケースが最も多いです。

ぜひ、それぞれのスプレッドシートを読み込むメソッドの違いを理解して、GASでスプレッドシート操作を行いましょう。