【GAS】スプレッドシートの各シートの目次(シート名の一覧)を作成する
Google Apps Script (GAS)を使って、Googleスプレッドシートの各シートの目次(シート名の一覧)を作成する方法を紹介します。複数のシートを持つスプレッドシートで、特定のシートに目次を表示することで、他のシートへのアクセスが容易になります。
1. プロジェクトの準備
まずは、GASプロジェクトを作成するためにGoogleスプレッドシートを開きます。
- スプレッドシートを開く
- 「拡張機能」メニューから「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. コードの解説
-
const ss = SpreadsheetApp.getActiveSpreadsheet();
- 現在アクティブなスプレッドシートを取得します。
-
const ssId = ss.getId();
- スプレッドシートのIDを取得します。後でURLを生成する際に使用します。
-
const sheetName = '目次シート'
- 目次シートの名前を指定します。
-
let targetSheet = ss.getSheetByName(sheetName);
- 指定した名前のシートが存在するか確認し、取得します。存在しない場合は
null
が返されます。
- 指定した名前のシートが存在するか確認し、取得します。存在しない場合は
-
if (targetSheet === null) targetSheet = ss.insertSheet(0).setName(sheetName);
- 目次シートが存在しない場合、新しいシートを作成し、名前を設定します。
-
const sheets = ss.getSheets();
- スプレッドシート内のすべてのシートを取得します。
-
console.log(`シート総数: ${sheets.length}`);
- スプレッドシート内のシート総数をコンソールに出力します。
-
for (const sheet of sheets) { ... }
- 各シートに対して以下の処理を行います。
-
const sheetId = sheet.getSheetId();
- 現在のシートのIDを取得します。
-
const sheetName = sheet.getSheetName();
- 現在のシートの名前を取得します。
-
console.log(`${sheetName}`);
- 現在のシート名をコンソールに出力します。
-
const url = `https://docs.google.com/spreadsheets/d/${ssId}/edit#gid=${sheetId}`;
- 現在のシートへのURLを作成します。
-
const rowValue = [`=HYPERLINK("${url}","${sheetName}")`, sheetName, url];
- 目次シートに追加する行の値を設定します。ここでは、ハイパーリンク、シート名、URLの3つの値を設定します。
-
targetSheet.appendRow(rowValue);
- 目次シートに設定した行の値を追加します。
4.まとめ
この記事では、Google Apps Scriptを使ってGoogleスプレッドシートの目次を自動的に作成する方法を紹介しました。スクリプトを使うことで、シートが増えても簡単に目次を管理できるようになります。ぜひ試してみてください!
Discussion