GASでスプレッドシートにあるシート数を取得する方法(getNumSheets)

Google Apps Script(GAS)でスプレッドシートに存在しているシート数がいくつか取得することができます。

GASでスプレッドシートのシート枚数を取得する方法を解説します。

GASでスプレッドシートのシート数が取得可能

Google Apps Script(GAS)でスプレッドシートを処理していると、シートがどれだけあるか知りたい場合があります。

スプレッドシートのシート数に応じて、スクリプト処理する場合に必要です。

そんな利用ニーズに備え、GASにはシート数を取得できるようになっています。

シート数を数えるgetNumSheetsメソッド

スプレッドシートのシート数を数えるGoogle Apps Script(GAS)のメソッドgetNumSheetsです。

spreadsheet.getNumSheets()

getNumSheetsメソッドは、スプレッドシートオブジェクトで実行します。

個別のシートオブジェクトだとgetNumSheetsメソッドは実行できないので、注意が必要です。

引数は不要で、getNumSheetsメソッドを実行すると、スプレッドシートに存在するシート数を数値として取得できます。

GASでシート数を取得するサンプルコード

実際にGoogle Apps Script(GAS)のgetNumSheetsメソッドを使ってスプレッドシートのシート数を取得するサンプルコードを解説します。

上記のような3つのシートがあるスプレッドシートのコンテナバインド型スクリプトで以下のサンプルコードを用意しました。

function setSheetColor() {
  //スクリプトに紐づくスプレッドシートを取得
  let mySheet = SpreadsheetApp.getActiveSpreadsheet();
  //スプレッドシートに存在するシート数を取得
  let sheetNum = mySheet.getNumSheets();
  //シート数をログ出力
  console.log(sheetNum);
}

スクリプトに紐づくスプレッドシートを取得したあと、getNumSheetsメソッドでシート枚数を取得し、ログ出力します。

実際にシート数を取得するGASスクリプトを実行すると、実行ログにシート数が表示されます。

前述したスプレッドシートにあったシート数が取得できていることが確認できます。

続いて、スクリプトに紐づくスプレッドシートのシート数を3枚ほど追加してみました。

スプレッドシートのシート枚数が変化した状態で、GASサンプルコードを再度実行すると、シート数が変化します。

サンプルコードを実行したタイミングで、スプレッドシートのシート枚数を数えています。

getSheetsメソッドでもシート数がわかる

なお、スプレッドシートのシート数を取得する方法として、getSheetsメソッドを利用する方法もあります。

getSheetsメソッドはスプレッドシートに存在するシートをすべて取得するメソッドです。

シートを配列として取得するため、getSheetsメソッドで全シートを取得したあと、lengthプロパティを使えばシート数を取得できます。

getNumSheetsメソッドとの使い分けですが、全部のシート処理するのが前提であれば、getSheetsメソッドのlengthプロパティで問題ありません。

ただ、シート数に応じて、シート処理しないケースもある場合は、getNumSheetsメソッドだけ使えば、全シートの読み込みが不要です。

GASスクリプト的にも使用するメモリが少なくて済むので、getNumSheetsを使うのが効率的なプログラムに繋がります。

まとめ・終わりに

今回、スプレッドシートのシート数をGoogle Apps Script(GAS)で取得する方法を紹介しました。

getNumSheetsメソッドを使うことで、スプレッドシートに存在しているシート枚数を数えることができます。

getSheetsメソッドでスプレッドシートの全シートを取得して、lengthプロパティで枚数を得ることもできますが、シート数だけ必要な場合はgetNumSheetsメソッドが推奨です。

スプレッドシートのシート数をGASで取得したい場合は、今回紹介したサンプルコードをご活用ください。