如何修改Google Apps Script从指定工作表读取排除表与范围配置?
修改后的Google Apps Script代码
function myFunction2() { const templateSheetName = "Template"; const helperSheetName = "Helper"; const ss = SpreadsheetApp.getActiveSpreadsheet(); const helperSheet = ss.getSheetByName(helperSheetName); // 从Helper!A1:A8读取需排除的工作表名称,自动过滤空单元格,同时加入模板表 const sheetsToExclude = [templateSheetName, ...helperSheet.getRange("A1:A8").getValues() .flat() .filter(name => name !== "")]; // 从Helper!B1:B4读取需复制的单元格范围,过滤空单元格 const ranges = helperSheet.getRange("B1:B4").getValues() .flat() .filter(range => range !== ""); // 获取所有需要应用公式的工作表(排除指定列表) const targetSheets = ss.getSheets().filter(sheet => !sheetsToExclude.includes(sheet.getSheetName())); // 从模板表批量读取指定范围的公式 const templateSheet = ss.getSheetByName(templateSheetName); const formulas = ranges.map(range => templateSheet.getRange(range).getFormulas()); // 将公式批量写入目标工作表的对应范围 targetSheets.forEach(sheet => { ranges.forEach((range, index) => { sheet.getRange(range).setFormulas(formulas[index]); }); }); }
关键修改说明
- 动态读取排除列表:不再硬编码排除的工作表名称,而是从
Helper表的A1:A8范围读取,同时自动过滤空单元格,保留原逻辑里的模板表排除规则 - 动态读取复制范围:从
Helper表的B1:B4范围读取需要复制公式的单元格区域,过滤空单元格避免无效范围 - 逻辑优化:小幅整理了工作表获取、公式读取的步骤,代码更清晰,同时完全保留原代码的核心功能——将模板表指定范围的公式同步到所有非排除工作表的对应位置
内容的提问来源于stack exchange,提问作者DCC
相关产品推荐
相关产品推荐

