如何用Google Sheet脚本自动提取各工作表URL并写入A1,排除Main表
修正后的Google Sheets脚本实现需求
这里是满足你需求的修正版脚本,已经解决原脚本的问题:
function getAndWriteSheetUrls() { const ss = SpreadsheetApp.getActiveSpreadsheet(); // 获取所有工作表,排除名为"Main"的表 const sheets = ss.getSheets().filter(sheet => sheet.getName() !== "Main"); // 遍历每个工作表,将URL写入A1单元格 sheets.forEach(sheet => { sheet.getRange("A1").setValue(sheet.getUrl()); }); // 可选:在Main工作表汇总所有URL(如果需要的话) const mainSheet = ss.getSheetByName("Main"); if (mainSheet) { // 把所有工作表URL整理成二维数组,写入Main的A列(从A1开始) const urlList = sheets.map(sheet => [sheet.getUrl()]); mainSheet.getRange(1, 1, urlList.length, 1).setValues(urlList); } }
原脚本的问题说明
- 没有过滤"Main"工作表,会错误地给Main表也写入URL
- 写入位置是
B3,不符合你要求的A1单元格 - 重复调用
getSheets(),虽然不报错但属于冗余操作,优化后只获取一次工作表列表
补充说明
- 脚本里的汇总部分是可选的,如果不需要可以删掉对应的代码块
- 执行脚本前记得给脚本授权,第一次运行会提示权限申请,按步骤完成即可
内容的提问来源于stack exchange,提问作者Shawa
相关产品推荐
相关产品推荐

