求助:编写可自动更新的Apps Script筛选含“Week of”的工作表名列表
解决方案:筛选并自动更新“Week of”开头的工作表列表
核心筛选逻辑替换
把原来获取所有工作表或固定跳过前6个的逻辑,换成按标题前缀筛选,用startsWith()方法精准匹配以"Week of"开头的工作表,不管后续新增多少表都能自动识别。
完整代码实现
function updateWeekSheetsList() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const allSheets = ss.getSheets(); // 筛选标题以"Week of"开头的工作表 const targetSheets = allSheets.filter(sheet => sheet.getName().startsWith("Week of")); // 提取工作表名称列表 const sheetNames = targetSheets.map(sheet => sheet.getName()); // 把列表写入指定工作表(示例:写入"汇总表"的A列,A1为表头) const outputSheet = ss.getSheetByName("汇总表"); if (!outputSheet) return; // 如果目标表不存在则终止 // 清空旧数据(从A2开始,保留A1表头) const oldDataRange = outputSheet.getRange(2, 1, outputSheet.getLastRow() - 1, 1); if (outputSheet.getLastRow() > 1) oldDataRange.clearContent(); // 写入新数据 if (sheetNames.length > 0) { outputSheet.getRange(2, 1, sheetNames.length, 1).setValues(sheetNames.map(name => [name])); } } // 打开文档时自动更新列表 function onOpen() { updateWeekSheetsList(); } // 编辑文档时自动更新列表 function onEdit() { updateWeekSheetsList(); }
关键说明
- 筛选逻辑:
sheet.getName().startsWith("Week of")会严格匹配标题开头的关键词,大小写敏感(如果需要忽略大小写可以改成sheet.getName().toLowerCase().startsWith("week of")) - 自动触发:
onOpen()和onEdit()是Apps Script内置的简单触发器,无需手动配置,打开或编辑文档时会自动运行更新 - 自定义调整:你可以修改
"汇总表"为你实际要存放列表的工作表名称,也可以调整写入的行列位置(比如从B3开始写就改getRange(3, 2, ...))
内容的提问来源于stack exchange,提问作者Shailen Vadera
相关产品推荐
相关产品推荐

