なごるふ

UnityとかArduinoとか気になったことを

【スプレッドシート】GASで一括取得したシート名を一覧表示する

スプレッドシート上でデータを管理する過程で、シート名の一覧を取得したいことがあったのですが、調べてみたところシート名を取得するにはGASを使う必要があるようです。

シート名の一覧を取得して、スプレッドシート上に列挙するのを試してみます。

シート名取得

スプレッドシートのシート名はGASで以下のような関数で取得できます。

function GET_SHEET_NAME(sheet_no)
{
  return SpreadsheetApp.getActive().getSheets()[sheet_no].getSheetName();
}

一括取得

シート名の一覧表示はGASでシート名を一括取得して、スプレッドシートに用意された関数を使ってセルに分解します。

function GET_SHEET_NAMES()
{
  var sheetNames = "";
  var sheets = SpreadsheetApp.getActive().getSheets();
  sheets.forEach(function(sheet)
  {
      if(sheetNames != "")
      {
        sheetNames+=",";
      }

      sheetNames += sheet.getSheetName();
  });

  return sheetNames;
}

文字列に結合する形で、カンマ区切りでシート名を取得する関数を作成しました。

GASは詳しくないので簡潔な書き方があるかも知れませんが一旦これで。

セル反映

一覧表示したい場所の最初のセルに以下の式を入れます。

=TRANSPOSE(SPLIT(GET_SHEET_NAMES(),","))

GET_SHEET_NAMESで取得したカンマ区切りの文字列を、TRANSPOSE関数で縦方向にSPLIT関数で分解して挿入するという感じです。

GASのエラーが出なければ、シート名が1行ずつ改行されてこのような表示になります。

横方向に並べたい場合はTRANSPOSE関数を外します。

シート名さえ取得できてしまえば、あとは取得したシート名を使ってシートごとの情報をスプレッドシート関数で取得できると思います。