GASでスプレッドシートの特定シートをアクティブ化する方法(activateメソッド)

2022年1月6日

スプレッドシートでは現在どのシートがアクティブな状態かという情報を保持しています。

Google Apps Scriptを使えば、任意のシートをアクティブ化することができるので、その方法を解説します。

スプレッドシートではシートの選択状態を保持

スプレッドシートでは、開いているシートがなにかという状態を保持しています。

スプレッドシートでどのシートを選択して開いているか状態が確認可能

例えば、上記のスプレッドシートには3つのシートあり、「データ一覧」シートを開いています。

この開いているシートを「アクティブなシート」として取り扱うことができます。

もし、スプレッドシートにシートが1つしかない場合、そのシートが必ずアクティブなシートとなります。

GASではアクティブなシート取得可能

Google Apps Script(GAS)のスプレッドシートに紐づくコンテナバインドスクリプトでは、アクティブなシートを取得することができます。

※GASでスプレッドシートのシートを読み込む方法の解説記事はこちら

アクティブなシートの読み込みの場合、シート名を指定する必要がないため、スクリプトのコード数を削減できます。

さらにシート名を指定しないでよいため、GASスクリプトの流用がしやすくて便利です。

GASスクリプトで特定シートのアクティブ化

ただ、スプレッドシートのシートが複数ある場合、どのシートがアクティブなのか分かりづらいことがあります。

スクリプトに用意されたボタンをクリックしてGASスクリプトを実行する場合は、アクティブなシートが決まっているので問題ありません。

しかし、トリガー登録してGASをスケジュール実行する場合、アクティブなシートが想定と違う場合が出てきます。

そうした場合の対処方法の1つとして、GASのスクリプトで特定シートをアクティブ化する方法があります。

シートをアクティブにするactivateメソッド

Google Apps Script(GAS)でスプレッドシートの特定シートをアクティブ化するため、activateメソッドが用意されています。

sheet.activate()

activateメソッドは、アクティブにしたいsheetオブジェクトで実行します。

activateメソッド実行には引数が必要ありません。

実行すると、アクティブなシートの状態が変更されます。

GASで指定するシートをアクティブ化するサンプルコード

実際にGASで指定のシートをアクティブ化するサンプルコードを解説します。

スプレッドシートでどのシートを選択して開いているか状態が確認可能

先程のスプレッドシートに紐づくGASスクリプトを用意して、以下のスクリプトを実行します。

Google Aps Script(GAS)でスプレッドシートの特定シートをアクティブ化するacitvateメソッドのサンプルコード
function activateSheet() {
  //スクリプトに紐づくスプレッドシートのアクティブなシートを取得
  let mySheet = SpreadsheetApp.getActiveSheet();
  //シート名をログ出力
  console.log("シート名は " + mySheet.getSheetName() + " です。"); 
  //GASでスプレッドシートの「設問リスト」シートをアクティブ化
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("設問").activate();
  //再度スプレッドシートのアクティブなシートを取得
  mySheet = SpreadsheetApp.getActiveSheet();
  //再度シート名をログ出力
  console.log("シート名は " + mySheet.getSheetName() + " です。");  
}

最初にデフォルトの状態でアクティブなシートを取得します。

そのシート名がなにか確認したあと、アクティブ化したいシートに対し、activateメソッドを実行します。

その後、再度アクティブなシートを取得し、シート名をログ出力してみるサンプルコードです。

Google Aps Script(GAS)で特定シートをアクティブ化するサンプルコードの実行結果

1回目のアクティブなシート名と、2回目のアクティブなシート名のログ出力が変化していることが分かります。

Google Aps Script(GAS)でacitvateメソッドでアクティブなシートを変更した結果、シートの表示が切り替わる

さらに、スクリプトが紐づくスプレッドシートのタブを確認すると、アクティベートしたシートが選択されているようになります。

このように、GASのactivateメソッドを活用することで、アクティブなシートの切り替えが可能です。

なお、すでにアクティブなシートに対し、activateメソッドを使ってもエラーは出ず、そのまま同じシートがアクティブのままになります。

まとめ・終わりに

今回、スプレッドシートのアクティブなシートを、Google Apps Script(GAS)で異なるシートに変更するアクティブ化の方法を紹介しました。

アクティブ化したいsheetオブジェクトでactivateメソッドを実行することで、アクティブなシートを切り替えることができます。

実際のGASスクリプトの利用では、アクティブ化が必要になるシーンは少ないですが、activateメソッドが用意されていることは覚えておきましょう。