🦀

【GAS】スプレッドシートの各シートの目次(シート名の一覧)を作成する

2024/06/15に公開

Google Apps Script (GAS)を使って、Googleスプレッドシートの各シートの目次(シート名の一覧)を作成する方法を紹介します。複数のシートを持つスプレッドシートで、特定のシートに目次を表示することで、他のシートへのアクセスが容易になります。

1. プロジェクトの準備

まずは、GASプロジェクトを作成するためにGoogleスプレッドシートを開きます。

  1. スプレッドシートを開く
  2. 「拡張機能」メニューから「Apps Script」を選択

新しいスクリプトエディタが開きます。

2. スクリプトの作成

以下のコードをスクリプトエディタにコピーして貼り付けます。

function main() {
  // アクティブなスプレッドシートを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // スプレッドシートのIDを取得
  const ssId = ss.getId();

  // 目次シートの名前を設定
  const sheetName = '目次シート'
  // 目次シートを取得(存在しない場合はnull)
  let targetSheet = ss.getSheetByName(sheetName);
  // 目次シートが存在しない場合、新規シートを作成し名前を設定
  if (targetSheet === null) targetSheet = ss.insertSheet(0).setName(sheetName);

  // 全シートを取得
  const sheets = ss.getSheets();
  // シートの総数をコンソールに出力
  console.log(`シート総数: ${sheets.length}`);

  // 各シートに対して処理を行う
  for (const sheet of sheets) {
    // シートIDを取得
    const sheetId = sheet.getSheetId();
    // シート名を取得
    const sheetName = sheet.getSheetName();
    // シート名をコンソールに出力
    console.log(`${sheetName}`);

    // シートへのURLを作成
    const url = `https://docs.google.com/spreadsheets/d/${ssId}/edit#gid=${sheetId}`;
    // 目次に追加する行の値を設定(ハイパーリンク、シート名、URL)
    const rowValue = [`=HYPERLINK("${url}","${sheetName}")`, sheetName, url];
    // 目次シートに行を追加
    targetSheet.appendRow(rowValue);
  }
}

3. コードの解説

  1. const ss = SpreadsheetApp.getActiveSpreadsheet();

    • 現在アクティブなスプレッドシートを取得します。
  2. const ssId = ss.getId();

    • スプレッドシートのIDを取得します。後でURLを生成する際に使用します。
  3. const sheetName = '目次シート'

    • 目次シートの名前を指定します。
  4. let targetSheet = ss.getSheetByName(sheetName);

    • 指定した名前のシートが存在するか確認し、取得します。存在しない場合はnullが返されます。
  5. if (targetSheet === null) targetSheet = ss.insertSheet(0).setName(sheetName);

    • 目次シートが存在しない場合、新しいシートを作成し、名前を設定します。
  6. const sheets = ss.getSheets();

    • スプレッドシート内のすべてのシートを取得します。
  7. console.log(`シート総数: ${sheets.length}`);

    • スプレッドシート内のシート総数をコンソールに出力します。
  8. for (const sheet of sheets) { ... }

    • 各シートに対して以下の処理を行います。
  9. const sheetId = sheet.getSheetId();

    • 現在のシートのIDを取得します。
  10. const sheetName = sheet.getSheetName();

    • 現在のシートの名前を取得します。
  11. console.log(`${sheetName}`);

    • 現在のシート名をコンソールに出力します。
  12. const url = `https://docs.google.com/spreadsheets/d/${ssId}/edit#gid=${sheetId}`;

    • 現在のシートへのURLを作成します。
  13. const rowValue = [`=HYPERLINK("${url}","${sheetName}")`, sheetName, url];

    • 目次シートに追加する行の値を設定します。ここでは、ハイパーリンク、シート名、URLの3つの値を設定します。
  14. targetSheet.appendRow(rowValue);

    • 目次シートに設定した行の値を追加します。

4.まとめ

この記事では、Google Apps Scriptを使ってGoogleスプレッドシートの目次を自動的に作成する方法を紹介しました。スクリプトを使うことで、シートが増えても簡単に目次を管理できるようになります。ぜひ試してみてください!

Discussion