Yuki's bnb blog

こんにちは!Yukiといいます。本業のかたわら大阪で2016年夏から民泊運営のお手伝いをしています。民泊業務に関する様々なことを自動化・効率化したいと思い日々活動しています。 お気軽にコメント・お問い合わせください :) TOEICスコア 985

【初心者向け!GAS基本操作】スプレッドシートのシート数を取得する方法

Google Apps Script Spreadsheet getNumSheets

こんにちは!
Yuki (@yukibnb) です。

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

では見ていきましょう!

 

はじめに

実現したいこと

Google Apps Script Spreadsheet getNumSheets

スプレッドシートに複数のシートが存在する場合、数個程度ならパッと目視でシート数を確認できますがシート数が多くなると数えるのが手間です。

GASを使うとシート数を簡単に取得 (確認) することができます。

 

≪getNumSheets≫スプレッドシートのシート数を取得する

Google Apps Script Spreadsheet 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にシート数が格納されています。

これでスプレッドシートのシート数を確認完了です。簡単ですね!

次に応用のポイントも見てみましょう。

 

memo

スプレッドシートの取得方法を知りたい方は以下記事をご覧ください。
【コピペでOK!GAS基本操作】スプレッドシートを取得する方法まとめ

 

応用のポイント

getNumSheetsは「すべての」シート数を取得する

getNumSheetsメソッドはスプレッドシートのすべてのシート数を取得します。

例えばスプレッドシート内に「表示されているシート数が5」、「非表示のシート数が3」の場合、getNumSheetsメソッドの戻り値は8となります。

「表示されているシート数だけを取得したい」、「非表示のシート数だけを取得したい」という場合の方法を見てみましょう。

 

isSheetHiddenメソッドを活用して表示・非表示シート数を取得しよう

Google Apps Script 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します。

 

memo

sh[インデックス番号]と記述することで変数shに格納されているシートを一つ一つ取り出しています。詳しくは以下記事をご覧ください。
【コピペでOK!GAS基本操作】シートを取得する方法まとめ

 

変数shHiddenとshShownの値を確認する
//非表示のシート数を確認する
Logger.log(shHidden);

//表示されているシート数を確認する
Logger.log(shShown);

for文が完了した段階で変数shHiddenには非表示のシート数が、変数shShownには表示されているシート数がそれぞれ格納されています。

Logger.logでそれぞれの変数の値を確認してみましょう。

これで無事に非表示のシート数と、表示されているシート数を取得することができました!

 

まとめ

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

  • すべてのシート数 (非表示・表示の合計)
  • 非表示のシート数
  • 表示されているシート数

みなさんの目的に応じて上記3つのパターンを使い分けて活用ください。

次回記事もご期待ください!