Google Sheets Apps Script合并listsheets与linkRange实现自动跳转工作表列表
合并后实现自动生成带跳转链接工作表列表的Apps Script方案
将两个函数的能力整合后可一次性生成带内部跳转链接的工作表名称列表,无需分两步执行,适配100+工作表的高频更新场景,完整代码如下:
function generateLinkedSheetList() { // 可自定义配置项 const config = { targetSheetName: "List of Sheets", // 存放列表的工作表名 startRow: 2, // 列表开始行,第1行可自行添加表头 column: 1, // 列表存放的列号,1对应A列 skipSheets: ["List of Sheets"] // 不需要展示在列表里的工作表,可按需增减 } const ss = SpreadsheetApp.getActiveSpreadsheet() const targetSheet = ss.getSheetByName(config.targetSheetName) const allSheets = ss.getSheets() const linkedValues = [] // 遍历所有工作表生成带链接的富文本 allSheets.forEach(sheet => { if (config.skipSheets.includes(sheet.getName())) return const sheetId = sheet.getSheetId() // 构建带跳转链接的富文本 const richText = SpreadsheetApp.newRichTextValue() .setText(sheet.getName()) .setLinkUrl(`#gid=${sheetId}`) .build() linkedValues.push([richText]) }) // 清空旧数据避免残留 targetSheet.getRange(config.startRow, config.column, targetSheet.getLastRow() - config.startRow + 1, 1).clearContent() // 批量写入带链接的列表 targetSheet.getRange(config.startRow, config.column, linkedValues.length, 1).setRichTextValues(linkedValues) }
使用说明
- 确认你的表格内存在名为
List of Sheets的工作表,如需用其他名称,修改config里的targetSheetName参数即可 - 将代码粘贴到「扩展程序 > Apps Script」编辑器内保存,运行
generateLinkedSheetList函数即可生成列表,首次运行需按提示完成授权 - 如需新增工作表后自动更新列表,可在Apps Script编辑器的「触发器」页面添加
onChange触发规则,触发函数选择generateLinkedSheetList,即可实现工作表增删后自动刷新列表
内容的提问来源于stack exchange,提问作者Ryan Luttrell
相关产品推荐
相关产品推荐

