Home » Googleスプレッドシートの使い方 » Google Apps Scriptでアクティブでないシートを取得する

Google Apps Scriptでアクティブでないシートを取得する

対象:Googleスプレッドシート & Google Apps Script

「google apps script アクティブではないシート」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

GAS(Google Apps Script)では、
 var sh
 = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
或いは、
 var bk = SpreadsheetApp.getActiveSpreadsheet();
 var sh = bk.getActiveSheet();
のようにSpreadsheet.getActiveSheet()メソッドを使って、アクティブなシートを取得することができます。

「google apps script アクティブではないシート」
という検索をなさった方は、おそらくこのことはご存知で、逆にアクティブになっていないシートを取得したい場合には、どのようなコードを書けばいいのかを探していらしたのでしょう。

[スポンサードリンク]

シート名を指定してSheetを取得するサンプルスクリプト

シート名からシートを取得する場合は、以下のようなコードです。

function sample_getSheetByName(){

 var bk = SpreadsheetApp.getActiveSpreadsheet();
 var sh = bk.getSheetByName("sample");

 if(sh != null){
  Browser.msgBox(sh.getRange("A1").getValue());
 }

}

上記のスクリプトを実行すると「sample」という名前のシートのA1セルの値がメッセージボックスに表示されます。

変数・shに格納を行っている、
 var sh = bk.getSheetByName("sample");
が、アクティブではないシートを取得している箇所です。

SpreadsheetクラスのgetSheetByName()メソッドで、シート名を使ってシートを取得できます。(getSheetByNameというそのままの名前のついたメソッドです)

Spreadsheet.getSheetByName()メソッドは、引数に指定された名前のシートが見つからなかったときにはnullを返してくるので、メッセージボックスにA1セルの値を表示する処理をif文で括っています。
 if(sh != null){
  Browser.msgBox(sh.getRange("A1").getValue());
 }

全シートを配列で取得してインデックスを指定してSheetを取得するサンプルスクリプト

シートの名前ではなく、何枚目のシートかを指定してシートを取得したい場合は、以下のようなスクリプトです。

function sample_getSheets_1(){

 var bk = SpreadsheetApp.getActiveSpreadsheet();
 var arr_sh = bk.getSheets();

 Browser.msgBox(arr_sh[0].getRange("A1").getValue());

}

上記のスクリプトを実行すると、一番左のシートのA1セルの値がメッセージボックスに表示されます。

先のシート名を使って取得するスクリプトで、
 var sh = bk.getSheetByName("sample");
となっていた箇所が、
 var arr_sh = bk.getSheets();
になっています。

SpreadsheetクラスのgetSheets()メソッドを使うと、すべてのシートを取得することができます。

Spreadsheet.getSheets()メソッドではすべてのシートが配列として返され、配列の1つ目の要素(添え字・インデックスの「0」)が、一番左のシートを表します。

配列の添え字・インデックスのはじまりが、「1」ではなく「0」だというところが、特に、Excel VBA(Visual Basic for Applications)のコレクションのインデックスが「1」始まりであることに慣れている方は要注意です。

上記のスクリプトでは、
 var arr_sh = bk.getSheets();
で、arr_shにすべてのシートを格納して、arr_sh[ ]の添え字に「0」を指定して、一番左のシートを取得して、そのA1セルの値をメッセージボックスに表示しています。
 Browser.msgBox(arr_sh[0].getRange("A1").getValue());

インデックスを指定してSheetを取得するサンプルスクリプト

Spreadsheet.getSheets()メソッドを使って、一番左のシートを取得するなら以下のようなコードも考えられます。

function sample_getSheets_2(){

 var bk = SpreadsheetApp.getActiveSpreadsheet();
 var sh = bk.getSheets()[0];

 Browser.msgBox(sh.getRange("A1").getValue());

}

先のスクリプトでは、
 var arr_sh = bk.getSheets();
 Browser.msgBox(arr_sh[0].getRange("A1").getValue());
と、まず全シートを含む配列を取得してから、一番左のシートを取得していましたが、このスクリプトでは、
 var sh = bk.getSheets()[0];
 Browser.msgBox(sh.getRange("A1").getValue());
と、Spreadsheet.getSheetsメソッド実行時に、配列の添え字「0」も併せて指定することで、一番左のシートをはじめから取得しています。

[スポンサードリンク]

Home » Googleスプレッドシートの使い方 » Google Apps Scriptでアクティブでないシートを取得する

「Googleスプレッドシートの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.