Google Sheets批量更新内部链接GID的Apps Script脚本需求
修复Google Sheets复制工作表后的内部链接失效问题
下面是可直接使用的Apps Script脚本,绑定按钮后一键修复当前工作表内所有失效的内部链接:
function fixInternalLinks() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const currentGid = sheet.getSheetId().toString(); const dataRange = sheet.getDataRange(); const richTextValues = dataRange.getRichTextValues(); // 遍历所有单元格 for (let row = 0; row < richTextValues.length; row++) { for (let col = 0; col < richTextValues[row].length; col++) { const richText = richTextValues[row][col]; const runs = richText.getRuns(); let newRuns = []; // 处理每个富文本片段 runs.forEach(run => { const url = run.getLinkUrl(); if (url && url.startsWith('#gid=')) { // 替换旧的gid为当前工作表的gid const updatedUrl = url.replace(/(#gid=)\d+/, `$1${currentGid}`); newRuns.push(run.copy().setLinkUrl(updatedUrl).build()); } else { newRuns.push(run); } }); // 更新单元格的富文本内容 if (newRuns.length > 0) { const newRichText = SpreadsheetApp.newRichTextValue() .appendRuns(newRuns) .build(); dataRange.getCell(row + 1, col + 1).setRichTextValue(newRichText); } } } SpreadsheetApp.getUi().alert('内部链接修复完成!'); }
使用步骤:
- 打开目标Google Sheets表格,点击顶部菜单栏「扩展程序」→「Apps 脚本」
- 在脚本编辑器中删除默认代码,粘贴上述脚本
- 点击保存按钮,给项目命名(比如「FixInternalLinks」)
- 返回表格,点击顶部菜单栏「插入」→「绘图」,绘制一个自定义按钮(比如文本设为「修复链接」),保存后点击按钮,选择「分配脚本」,输入
fixInternalLinks并确认 - 后续复制工作表后,点击该按钮即可自动修复所有内部链接
脚本说明:
- 自动获取当前工作表的
gid(即Sheet ID) - 遍历工作表所有单元格的富文本内容,精准识别以
#gid=开头的内部链接 - 用当前工作表的gid替换链接中的旧gid,保留原链接的范围参数
- 修复完成后弹出提示框告知结果
内容的提问来源于stack exchange,提问作者Badyr
相关产品推荐
相关产品推荐

