如何让Google Sheets脚本自动遍历所有工作表批量执行相同逻辑
优化后可适配所有工作表的脚本如下
function priceSearchAllSheets() { const date = new Date(); const currenthour = date.getHours(); // 原24个if判断优化为直接计算目标单元格,0点对应B6,1点对应C6以此类推 const targetCell = `${String.fromCharCode(66 + currenthour)}6`; const formula = '=--SPLIT(REGEXEXTRACT(JOIN(",", IMPORTDATA(B1)),"LCPrice"":"(.*)"), CHAR(34))'; // 获取当前电子表格的所有工作表 const allSheets = SpreadsheetApp.getActive().getSheets(); // 遍历每个工作表执行逻辑 allSheets.forEach(sheet => { // 如果需要跳过特定工作表,可取消下面的注释修改表名即可 // if (['不需要执行的表1', '不需要执行的表2'].includes(sheet.getName())) return; sheet.getRange(targetCell).setValue(formula); }); }
核心修改说明
- 移除了冗余的小时判断逻辑,通过ASCII码直接计算目标单元格,代码量大幅减少,后续调整规则也更方便
- 调用
getSheets()方法直接获取当前文件内的所有工作表,自动适配新增的工作表,无需每次修改代码新增判断 - 修复了原代码中获取Sheet2后未绑定操作对象的问题:原代码
getRange默认操作当前激活的工作表,不是固定的Sheet2,修改后所有操作都绑定遍历到的工作表对象,逻辑更严谨 - 预留了跳过特定工作表的判断位,如果你有不需要执行该逻辑的汇总表、配置表等,直接修改注释中的过滤列表即可
内容的提问来源于stack exchange,提问作者hamd01
相关产品推荐
相关产品推荐

