求助:为Google Sheet创建跨工作表自动清除脚本
午餐订单表批量清除指定单元格范围的AppsScript代码
以下是适配你需求的批量清除脚本,可处理同一电子表格内所有27个工作表的指定单元格范围:
function clearLunchOrderRanges() { const ss = SpreadsheetApp.getActiveSpreadsheet(); // 替换为你实际需要清除的单元格范围,例如"B3:D25" const targetRange = "A2:C100"; // 获取所有工作表,如需排除特定表可添加过滤逻辑 const sheets = ss.getSheets(); sheets.forEach(sheet => { try { const range = sheet.getRange(targetRange); // 清除内容+格式,若仅需清内容改为range.clearContent() range.clear({contentsOnly: false, skipFilteredRows: true}); console.log(`已处理工作表:${sheet.getName()}`); } catch (err) { console.error(`工作表「${sheet.getName()}」处理失败:${err.message}`); } }); }
自定义说明
- 修改目标范围:将
targetRange的值替换为你实际需要清除的单元格区域,比如订单填写的有效范围 - 排除特定工作表:如果存在不需要处理的表(如汇总统计页),可添加过滤逻辑:
// 示例:排除名为"午餐汇总"的工作表 const filteredSheets = sheets.filter(sheet => sheet.getName() !== "午餐汇总"); filteredSheets.forEach(sheet => { /* 原遍历逻辑 */ }); - 清除选项调整:
range.clearContent():仅清除单元格内容,保留原有格式range.clearFormat():仅清除格式设置,保留内容- 代码中
clear()方法会同时清除内容和格式,skipFilteredRows: true会跳过被筛选隐藏的行
触发方式
- 手动运行:打开谷歌表格的「扩展程序」→「Apps 脚本」,粘贴代码后选中函数点击运行按钮
- 定时自动运行:在脚本编辑器右侧「触发器」面板,添加时间驱动触发器(比如每天凌晨自动执行)
- 按钮触发:在表格中插入绘图/按钮,将其关联到
clearLunchOrderRanges函数,点击即可执行
内容的提问来源于stack exchange,提问作者Jack OKeefe
相关产品推荐
相关产品推荐

