google documentがあまりにショボいもので、仕方なくgoogle spreadsheetで仕様書を書かざるを得ないってのは、よくある苦痛だと思う。
そしてspreadはシートが増えるとやってられないので、GASで簡単にURL付きの目次を作れるようにしてみた。
- sheetに"contents"と名前のついたsheetを作ると、"B3"から1行おきにURLを生成してくれる。
- myfunctionに入れておいて、sheetが追加されたり更新されたりのトリガで起動すると、自動的に目次が更新される。
sortするとか、もうちょっと目次らしくするとかもできるが、基本関数としてはこれでいいかなと。
myfunction()
const ss = SpreadsheetApp.getActiveSpreadsheet(); // ともかくspreadsheetを取得する。
const ssId = ss.getId();
const contSheet = ss.getSheetByName("contents");
const sheets = ss.getSheets();
let sRow=3;
let sCol=2;
sheets.forEach(item=>{
let sheetId = item.getSheetId();
let sheetName = item.getSheetName();
let url = "https://docs.google.com/spreadsheets/d/" + ssId + "/edit#gid=" + sheetId;
let link = [ '=HYPERLINK("' + url + '","' + sheetName + '")' ];
contSheet.getRange(sRow,sCol,1,1).setValue( link );
sRow=sRow+2;
});