Home » Googleスプレッドシートの使い方 » Google Apps Scriptでシートの枚数を取得する

Google Apps Scriptでシートの枚数を取得する

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

GAS(Google Apps Script)スクリプトを作成しているときに、Googleスプレッドシートに含まれるシートの枚数を取得する必要が出てきました。

その際、Excel VBA(Visual Basic for Applications)とは、考え方が随分違うなと感じましたので、記事にしておきます。

[スポンサードリンク]

VBAではコレクションオブジェクトに必ずCountプロパティがある

Excel VBAの場合、ワークシートもグラフシートも含むすべてのシートの枚数を取得するには、SheetsコレクションオブジェクトのCountプロパティを利用します。

ワークシートだけの枚数ならば、WorksheetsコレクションオブジェクトのCountプロパティで取得できます。

Sheetsコレクション・Worksheetsコレクションに限らず、VBAでは、そのコレクションに含まれる単一オブジェクトの数を返すCountプロパティが、コレクションオブジェクトには必ず用意されています。

Spreadsheet.getNumSheets()メソッドでシートの枚数を取得するサンプルスクリプト

VBAのオブジェクトモデルの考え方に慣れている私は、GASでもついつい同じように考えてしまいましたが、GASの場合はまったく違う考え方をする必要があり、以下のようなスクリプトでシートの枚数を取得できます。

function sample_getNumSheets(){

 var bk = SpreadsheetApp.getActiveSpreadsheet();
 var sh_cnt = bk.getNumSheets();

 Browser.msgBox(sh_cnt);

}

Excel VBAのWorkbookオブジェクト的な立場にあるSpreadsheetクラスに、シートの枚数を取得するgetNumSheet()メソッドが存在しています。

Spreadsheet.getSheets()メソッドとJavaScriptのArray.lengthプロパティでシートの枚数を取得するサンプルスクリプト

Excel VBA的な考え方をするなら、以下のようなコードでしょうか。

function sample_getSheets_length(){

 var bk = SpreadsheetApp.getActiveSpreadsheet();
 var sh_cnt = bk.getSheets().length;

 Browser.msgBox(sh_cnt);

}

SpreadsheetクラスのgetSheets()メソッドを使ってSheetオブジェクトを配列の形で取得して、配列の要素数を取得するJavaScriptのArray.lengthプロパティを使って、Sheetの数を取得しています。

[スポンサードリンク]

Home » Googleスプレッドシートの使い方 » Google Apps Scriptでシートの枚数を取得する

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

検索


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

.