スプレッドシートにシートの存在するかチェックするGASスクリプト(コピペでOK)

スプレッドシート内に、特定のシート名が存在するか、Google Apps Script(GAS)でシートの有無をチェックする方法を解説します。

シートの存在をチェックするGASメソッドはないため、自作したシート有無のチェック関数のサンプルコードを紹介します(コピペOKです)。

GASでシートの有無をチェック

Google Apps Script(GAS)でスプレッドシートを扱う際に、シートの有無をチェックしたいケースがあります。

スプレッドシート内に複数シートがある場合、GASでシートを取得する際にシート名を指定するメソッド(getSheetByName)を使います。

しかし、シート取得するgetSheetByNameメソッドで引数に指定したシート名が存在しないとスクリプトがエラーします。

共同編集しているスプレッドシートでは、シート名が書き換えられることがあります。

シートの保護をすると、シート名変更できないものの、シート内のセルも修正することもできなくなります。

そのため、GASスクリプトでシートの取得でエラーしないよう、シートが存在しているかチェックする必要があります。

シート存在チェックのGASメソッドはない

ただ、残念ながら、Google Apps Script(GAS)にはシートの存在をチェックするメソッドは用意されていません。

Google Aps Script(GAS)でシート存在チェックのメソッドはisを入力してもサジェストされず、用意されていない

存在チェックのメソッドは「is○○」という命名ルールのものが多いです。

しかし、スプレッドシートに対し、GASでisを入力してサジェストされるメソッドにはシート存在チェックのメソッドが表示されません。

GASリファレンスにもシート有無を確認するメソッドはないため、シートのチェックメソッドは自分で用意する必要があります。

シート存在チェックの関数を独自作成

シートの存在をチェックする関数は前述した通り、Google Apps Script(GAS)の標準メソッドにはありません。

しかし、GASのスクリプトでシートの有無をチェックする独自関数を用意すれば可能です。

シート名の文字列を引数とし、その引数のシート名が存在するかスプレッドシート内の全シートを確認し、一致するシートがあればtrue、なければfalseを返す関数を用意します。

一度シート存在チェック関数を用意すれば、標準メソッドと同じように手軽に利用できます。

シートの存在チェックするGAS関数

実際にシートの存在チェックするGoogle Apps Script(GAS)の関数のサンプルコードを紹介します。

コピペして使ってもらって問題ないので、GASのスクリプトエディタに貼り付けるだけで使用可能です。

※コンテナバインド型のスクリプトで利用可能なGASスクリプトで、スタンドアロン型では利用できません。

Google Aps Script(GAS)でシートの有無をチェックするスプレッドシート

サンプルコードでは、上記のスプレッドシートでシートの存在をチェックします。

スプレッドシートには「データ一覧」、「設問」、「回答項目」の3つのシートが存在しています。

シートの存在をチェックするGASの関数「inExistingSheet」は以下のサンプルコードとなります。

Google Aps Script(GAS)でスプレッドシート内のシートが存在するかチェックする自作関数
function isExistingSheet(sheetName) {
  //スクリプトに紐づくスプレッドシートのすべてのシートを取得
  let mySheet = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  //スプレッドシートにあるシート数だけforループを実行
  let flag = false;
  for(let i = 0; i< mySheet.length; i++){
    //引数のシート名と一致するシート名が存在した場合
    if(sheetName == mySheet[i].getSheetName()){
      //フラグをtrueにし、ループ処理を終了
      flag = true;
      break;
    }
  }
  //flag変数の結果を戻り値とする
  return flag;
}

最初にコンテナバインドで紐付いたスプレッドシートにある全てのシートを取得します。

そしてシート枚数分だけforループを実行し、引数のシート名と一致した場合にフラグをtrueとし、ループ処理を終了します。

引数のシート名が存在する場合にtrue、ない場合にfalseが戻り値として返ってくる関数です。

実際にサンプルコードのGAS関数「inExistingSheet」を以下のように実行しています。

Google Apps Script(GAS)でシート存在チェックの独自関数を実行したログ出力結果

実行ログにはシートが存在しない「テスト」だとfalse、シートが存在する「設問」だとtrueが出力されます。

このようにシート有無をチェックするGASスクリプトは、紹介した関数をエディタに貼り付けて、実行するだけで実装可能です。

まとめ・終わりに

今回、Google Apps Script(GAS)でスプレッドシート内のシートの有無をチェックする方法を紹介しました。

残念ながらシートが存在するかチェックするGASメソッドはありませんが、スクリプトで簡単に実装可能です。

今回、シート存在チェック関数のGASサンプルコードも用意したので、この関数をコピペすれば、すぐにシート有無をチェックできます。

スクリプトで存在しないシートを取得しようとするとエラーしてしまうため、今回紹介したチェック関数を用いて存在しない場合の処理分岐ができるようにしましょう。