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

Google Apps Script(GAS)でスプレッドシートにある各シートを読み込むための3つのメソッドを紹介します。

前回、Google Apps Scriptでスプレッドシートを取得・読み込む方法を解説しました。

今回はスプレッドシートのファイルにあるシートを取得する方法を解説していきます。

 

前回はスプレッドシートのファイル読み込み方法を紹介

前回の記事では、GoogleスプレッドシートのファイルをGoogle Apps Script(GAS)で読み込む方法について解説しました。

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

  1. GASに紐づくアクティブなスプレッドシート読み込み
  2. スプレッドシートのIDから読み込み
  3. スプレッドシートのURLから読み込み

3種類のGASのメソッドを使用したスプレッドシート読み込み方法の、それぞれのメリット・デメリットを紹介しました。

GASでシートを読み込む方法

今回はさらにスプレッドシートの中にあるシートを読み込む方法を解説していきます。

スプレッドシートのシートを読み込む方法としては、Spreadsheetクラスで定義されている以下の3つのメソッドを使います。

  1. getActiveSheet()
  2. getSheetByName(String name)
  3. getSheets()

Google Apps Scriptのスクリプトエディタでスプレッドシートのシートを読み込むメソッド3種類

getActiveSheet()によるシート読込み

getActiveSheet()を使ったシート読込みは、スプレッドシートに紐づくコンテナバインド型のGoogle Apps Scriptの場合のみ有効です。

GASのスクリプトに紐づくスプレッドシートで現在開いているアクティブなシートを読み込みます。

let Sheet = SpreadsheetApp.openById("スプレッドシートのID").getActiveSheet();

引数等が不要なため、シート名の変更等の影響は受けないのがメリットです。

スプレッドシートにシートが1つしかない場合は、このgetActiveSheet()を利用するのがオススメです。

さらにgetActiveSheetメソッドは、SpreadSheetAppクラスにも用意されています。

(getSheetByNameやgetSheetsはSpreadSheetクラスのメソッド)

後者の2つの場合、①スプレッドシート読込⇒②シート読込という2回の読み込み(APIリクエスト)が生じますが、getActiveSheetは①が不要で、シートを1回で読み込むことができます。

let activeSheet = SpreadsheetApp.getActiveSheet();

APIのリクエスト回数が処理時間へ大きく影響を与えるので、APIリクエスト回数を減らせるのは大きなメリットです。

ただし、注意点としてアクティブなシートという条件があります。

スプレッドシートに複数シートある場合、読み込みたいシートと別のシートが開かれていると、別のシートが読み込まれます。

getSheetByName(String name)によるシート読み込み

SpreadSheetクラスのgetSheetByNameメソッドは、スプレッドシートを読み込んだ後、シートの名前を指定して読み込みます。

let Sheet = SpreadsheetApp.openById("スプレッドシートのID").getSheetByName("シート1");

どのシートを読み込むか指定できるたけ、ソースの可読性も高いメリットがあります。

コンテナバインド型・スタンドアロン型のGASスクリプトどちらでも利用可能なメソッドです。

また、後述のgetSheetsメソッドはシートの順番入れ替えや追加でエラーが起きやすいですが、名前指定なので、シートの追加・入れ替えの影響も受けません。

ただ、シート名を指定するため、運用者によってシート名が変更されるとスクリプトが動作しなくなるデメリットがあります。

運用者にはシート名を変更しないよう注意を設けたり、シート名が変更できないような工夫が求められます。

getSheets()によるシート読み込み

getSheetsメソッドは読み込んだスプレッドシートにある全てのシートを読み込み、1次元配列に格納します。

let Sheet = SpreadsheetApp.openById("スプレッドシートのID").getSheets;

格納する順番はスプレッドシートの画面で並べられる通りの順番で読み込まれます。

色々なシート間でデータのやり取りが発生する場合には、一括でシートを読み込めるメリットがあります。

ただし、新たにシートを追加したり、シートの順番を入れ替えたりするとスクリプトが上手く動作しなくなるおそれがあります。

そうした事象を防ぐために、シート名の確認を行うようにするとコードの記述量が増大してしまいます。

シート読み込みはケースごとの使い分けが大切

シート読み込みの方法は、これがベストというメソッドはありません。

ケースバイケースでその時に適したメソッドを使い分けることが大切です。

例えば、スプレッドシートに紐づくコンテナバインド型スクリプトでシートが1つしかない場合はgetActiveSheetがオススメです。

その他、シートが複数枚ある場合はgetSheetByNameでシート名を指定して読み込む、複数のシートを読み込みたい場合はgetSheetsで読み込むといった使い分けるとよいと思います。

まとめ・終わりに

Googleスプレッドシートのシートを読み込む3つのメソッドを紹介しました。

getActiveSheet、getSheetByName、getSheetsの3つはそれぞれ特徴が異なります。

求めあられるケースに適したメソッドを使い分けることで、効率的なコードが記述できます。

それぞれのメリット・デメリットをぜひ理解し、シートを読み込むメソッドを使いこなしてください。