解決策
- タブ名とURLの一覧を作成する
- タブ名を打ったらURLを生成する独自関数を使う
背景
テスト項目書や画面仕様書をSpreadsheetで管理すると、タブがめちゃくちゃ増える。
そして
あれ、、、テスト#102ってどこだ
C17画面の仕様は・・・。
とか、Spreadsheetスクロール地獄が待っている。
その地獄を知っている人は、 一覧
的なタブを作成して、URLを手で貼っているかもしれない。
それは、それで、地獄である。(経験者です)
1. タブ名とURLの一覧を作成する
完成形
特定のタブに、シートを開くたびに目次を更新してくれるやつを作ろう。
スクリプト
function onOpen(){
// ブックを取得
const book = SpreadsheetApp.getActive()
// スプレッドシートキーを取得
const ss_key = book.getId()
// ブックに紐づくすべてのタブを取得
const sheets = book.getSheets()
// 吐き出し用のタブを取得
const sheet_index = book.getSheetByName('index')
// ここにタブ名, URLをためていきます。
var values = []
for(var i = 0; i < sheets.length; ++i){
var name = sheets[i].getSheetName()
var url = 'https://docs.google.com/spreadsheets/d/' + ss_key + '/edit#gid=' + sheets[i].getSheetId()
values.push([name, url])
}
// 削除にも対応するため、一度clear
sheet_index.clear()
// 出力
sheet_index.getRange(1,1,values.length, values[0].length).setValues(values)
}
これで毎回作っておいて、index-matchして特定タブのURLのみ引っ張るという手もある。
2. タブ名を打ったらURLを生成する独自関数を使う
完成形
スクリプト
function get_ss_url(sheet_name) {
// ブックを取得
const book = SpreadsheetApp.getActive()
// Spreadsheetキーを取得
const ss_key = book.getId()
// 該当シートを取得
const sheet = book.getSheetByName(sheet_name)
return 'https://docs.google.com/spreadsheets/d/' + ss_key + '/edit#gid=' + sheet.getSheetId()
}