スプレッドシートに存在する全シートの目次(リンク付き)を生成するGoogle Apps Scriptです。シートが増えすぎて移動が大変なときにどうぞ。
特にありません、今お使いのスプレッドシートに組み込むことが出来ます。
サンプルとして6個のシートを作りました。
そのうち1つは非表示のシートとしています。
上のメニューにある「スクリプト実行」から「シートの目次を生成する」を実行します。
実行が完了すると、このように目次が生成されます。
非表示のシートのリンクは生成されないようになっています。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00124/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('シートの目次を生成する', 'create_sheet_index');
// メニューを画面に追加する
menu.addToUi();
}
function create_sheet_index() {
// 開いているスプレッドシートオブジェクトを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();
// すべてのシートオブジェクトを取得
const sheets = ss.getSheets();
// リンク生成に使うため、スプレッドシートのURLを取得
const url = ss.getUrl();
// セルに書き込む値を格納する変数
const result = [];
// シートの数だけループ
for (let i = 0; i < sheets.length; i++) {
// 非表示のシートの場合は目次を作らない。スキップする。
if (sheets[i].isSheetHidden() == true) {
continue;
}
// シートの名前を取得。リンクの表示名に使用する。
let sheet_name = sheets[i].getName();
// シートのIDを取得。リンク生成に使用する。
let sheet_id = sheets[i].getSheetId();
// スプレッドシートのURLとシートのIDからURLを組み立てる
let link = url + '#gid=' + sheet_id;
// 結果用の変数に格納する。数式(HYPERLINK)をセット。
result.push(['=HYPERLINK("' + link + '","' + sheet_name + '" )']);
}
// 開いているシートオブジェクトを取得
const active_sheet = ss.getActiveSheet();
// 選択中のセル範囲を取得
const active_range = active_sheet.getActiveRange();
// 値の書き込み範囲のオブジェクトを取得する。アクティブセルを起点に、シート数分の行数を指定。
const range = active_sheet.getRange(active_range.getRow(), active_range.getColumn(), result.length, 1);
// 数式を書き込む。
range.setFormulas(result);
}
スプレッドシートの全てのシートのデータを、1つのシートに集約するGoogle Apps Scriptです。各シートで列が揃っていないと使いにくいですが、思いつきで作ってみました。
いま開いているシート以外のすべてのシートを非表示にするGoogle Apps Scriptです。あまり見られたくない作業用シートがたくさんあるときにどうぞ。
非表示になっている全てのシートを再度表示させるGoogle Apps Scriptです。人に見せるときには隠して、作業時は再表示したい時などに。
スプレッドシートの全てのシートを「保護」するGoogle Apps Scriptです。一時的にすべてのシートの更新を止めたい時などにどうぞ。
今開いているシートを先頭(一番左)や、最後(一番右)に移動するGoogle Apps Scriptです。シートが増えすぎてドラッグが大変なときにどうぞ。