こんにちは!
Yuki (@yukibnb) です。
今回はGoogle Apps Script (GAS) を使ってスプレッドシートのシート数を取得する方法を紹介します。
では見ていきましょう!
はじめに
実現したいこと
スプレッドシートに複数のシートが存在する場合、数個程度ならパッと目視でシート数を確認できますがシート数が多くなると数えるのが手間です。
GASを使うとシート数を簡単に取得 (確認) することができます。
≪getNumSheets≫スプレッドシートのシート数を取得する
スプレッドシートのシート数を取得するには、Spreadsheet
オブジェクトに対してgetNumSheets
メソッドを使用します。
例えば現在開いているスプレッドシートのシート数を取得したい場合、以下のように記述します。
//現在開いているスプレッドシートを取得する let ss = SpreadsheetApp.getActiveSpreadsheet(); //スプレッドシートのシート数を取得する let shNum = ss.getNumSheets(); //ログを確認 Logger.log(shNum);
特定のスプレッドシートのシート数を取得したい場合、以下のように記述します。
//スプレッドシートIDを使って特定のスプレッドシートを取得する let ss = SpreadsheetApp.openById("スプレッドシートID"); //スプレッドシートのシート数を取得する let shNum = ss.getNumSheets(); //ログを確認 Logger.log(shNum);
変数shNumb
にシート数が格納されています。
これでスプレッドシートのシート数を確認完了です。簡単ですね!
次に応用のポイントも見てみましょう。
スプレッドシートの取得方法を知りたい方は以下記事をご覧ください。
【コピペでOK!GAS基本操作】スプレッドシートを取得する方法まとめ
応用のポイント
getNumSheetsは「すべての」シート数を取得する
getNumSheets
メソッドはスプレッドシートのすべてのシート数を取得します。
例えばスプレッドシート内に「表示されているシート数が5」、「非表示のシート数が3」の場合、getNumSheets
メソッドの戻り値は8となります。
「表示されているシート数だけを取得したい」、「非表示のシート数だけを取得したい」という場合の方法を見てみましょう。
isSheetHiddenメソッドを活用して表示・非表示シート数を取得しよう
Sheet
オブジェクトに対してisSheetHidden
メソッドを使用すると、そのシートが非表示かどうか判別することができます。
シートが非表示であればTRUE
を、シートが表示されていればFALSE
を返します。
この性質を活用して以下のように記述すれば表示されているシート数、非表示のシート数をそれぞれ取得できます。
//現在開いているスプレッドシートを取得する let ss = SpreadsheetApp.getActiveSpreadsheet(); //すべてのシートを取得する let sh = ss.getSheets(); //非表示のシート数を格納するための変数を宣言する //初期値は0にする let shHidden = 0; //表示されているシート数を格納するための変数を宣言する //初期値は0にする let shShown = 0; //for文を使って各シートが非表示か表示されているか判別し、 //変数shHiddenもしくはshShownどちらかにプラス1する for(let i = 0; i < sh.length; i++){ if(sh[i].isSheetHidden()){ //シートが非表示の場合、変数shHiddenにプラス1する shHidden++ } else { //シートが表示されている場合、変数shShownにプラス1する shShown++ } } //非表示のシート数を確認する Logger.log(shHidden); //表示されているシート数を確認する Logger.log(shShown);
いくつかポイントを見てみましょう。
getSheetsメソッドですべてのシートを取得する
//すべてのシートを取得する let sh = ss.getSheets();
getSheets
メソッドを使うと、そのスプレッドシート内のすべてのシートを取得することができます。
getNumSheets
メソッドと同じく、非表示のシートも表示されているシートも含む「すべての」シートを取得します。
取得したすべてのシートを変数sh
に格納します。
カウント用の変数shHiddenとshShownを宣言する
//非表示のシート数を格納するための変数を宣言する //初期値は0にする let shHidden = 0; //表示されているシート数を格納するための変数を宣言する //初期値は0にする let shShown = 0;
「表示されているシート数」と「非表示のシート数」を格納するための変数をそれぞれ宣言します。
この時点ではどちらのシート数も不明のため、初期値として0を格納しておきます。
for文を使って各シートの表示・非表示を判別する
//for文を使って各シートが非表示か表示されているか判別し、 //変数shHiddenもしくはshShownどちらかにプラス1する for(let i = 0; i < sh.length; i++){ if(sh[i].isSheetHidden()){ //シートが非表示の場合、変数shHiddenにプラス1する shHidden++ } else { //シートが表示されている場合、変数shShownにプラス1する shShown++ } }
for文を使って変数sh
に格納されているシートを一つ一つ取り出して、そのシートが非表示か表示されているか判別します。
そして非表示なら変数shHidden
にプラス1を、表示されていれば変数shShown
にプラス1します。
sh[インデックス番号]
と記述することで変数sh
に格納されているシートを一つ一つ取り出しています。詳しくは以下記事をご覧ください。
【コピペでOK!GAS基本操作】シートを取得する方法まとめ
変数shHiddenとshShownの値を確認する
//非表示のシート数を確認する Logger.log(shHidden); //表示されているシート数を確認する Logger.log(shShown);
for文が完了した段階で変数shHidden
には非表示のシート数が、変数shShown
には表示されているシート数がそれぞれ格納されています。
Logger.log
でそれぞれの変数の値を確認してみましょう。
これで無事に非表示のシート数と、表示されているシート数を取得することができました!
まとめ
今回はGoogle Apps Script (GAS) を使ってスプレッドシートのシート数を取得する方法を紹介しました。
- すべてのシート数 (非表示・表示の合計)
- 非表示のシート数
- 表示されているシート数
みなさんの目的に応じて上記3つのパターンを使い分けて活用ください。
次回記事もご期待ください!