如何通过App Script每周自动清除并撤销Google Sheets指定单元格的值?
Google Sheets 清除指定单元格+撤销+每周定时触发实现方案
核心功能代码(清除+可撤销)
要实现可撤销的清除操作,需先将目标单元格数据备份到隐藏工作表,再执行清除;撤销时从备份表恢复数据即可。
// 自定义配置项 const TARGET_RANGE = "Sheet1!A1:C5"; // 替换成你要清除的单元格范围 const BACKUP_SHEET_NAME = "ClearBackup"; // 备份表名称(默认隐藏) /** * 清除指定单元格并创建备份 */ function clearTargetCells() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const targetData = ss.getRange(TARGET_RANGE).getValues(); // 创建或获取隐藏备份表 let backupSheet = ss.getSheetByName(BACKUP_SHEET_NAME); if (!backupSheet) { backupSheet = ss.insertSheet(BACKUP_SHEET_NAME); backupSheet.hideSheet(); } // 覆盖写入最新备份 backupSheet.clearContents(); backupSheet.getRange(1, 1, targetData.length, targetData[0].length).setValues(targetData); // 执行清除 ss.getRange(TARGET_RANGE).clearContents(); SpreadsheetApp.getUi().alert("已清除指定单元格,可执行撤销操作恢复数据"); } /** * 撤销清除操作,恢复备份数据 */ function undoClear() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const backupSheet = ss.getSheetByName(BACKUP_SHEET_NAME); if (!backupSheet) { SpreadsheetApp.getUi().alert("无可用备份,无法撤销"); return; } const backupData = backupSheet.getDataRange().getValues(); if (backupData.length === 0) { SpreadsheetApp.getUi().alert("备份为空,无法撤销"); return; } // 恢复数据到目标单元格 ss.getRange(TARGET_RANGE).setValues(backupData); // 可选:清空备份表(注释此行可保留备份用于多次撤销) backupSheet.clearContents(); SpreadsheetApp.getUi().alert("已恢复指定单元格数据"); }
配置每周定时触发器
方式1:脚本自动创建触发器
运行一次以下函数,即可自动生成每周指定时间的触发任务(示例为每周一上午9点):
/** * 创建每周定时清除触发器 */ function createWeeklyTrigger() { // 先删除已存在的同名触发器避免重复 const existingTriggers = ScriptApp.getProjectTriggers(); for (let trigger of existingTriggers) { if (trigger.getHandlerFunction() === "clearTargetCells") { ScriptApp.deleteTrigger(trigger); } } // 创建每周一9点的触发器(可修改dayOfWeek和hour参数) ScriptApp.newTrigger("clearTargetCells") .timeBased() .everyWeeks(1) .onWeekDay(ScriptApp.WeekDay.MONDAY) .atHour(9) .create(); SpreadsheetApp.getUi().alert("每周定时触发器已创建"); }
方式2:手动创建触发器
- 打开表格右上角「扩展程序」→「Apps Script」进入编辑器
- 点击左侧时钟图标「触发器」,选择「添加触发器」
- 配置参数:
- 运行函数:
clearTargetCells - 部署类型:时间驱动
- 事件源:基于时间的计时器
- 时间类型:周计时器
- 设定具体执行时间(如每周一上午9点)
- 运行函数:
- 点击「保存」并完成授权
使用说明
- 手动操作:可以在脚本编辑器中直接运行函数,也可添加自定义菜单一键操作(代码如下):
// 给表格添加顶部自定义菜单 function onOpen() { const ui = SpreadsheetApp.getUi(); ui.createMenu("自定义操作") .addItem("清除指定单元格", "clearTargetCells") .addItem("撤销清除", "undoClear") .addToUi(); }
- 撤销限制:撤销操作仅保留最近一次清除的备份,多次清除后只能恢复最后一次的数据
- 备份表管理:备份表默认隐藏,如需查看可右键表格底部标签→「取消隐藏」
内容的提问来源于stack exchange,提问作者Mahmood_M
相关产品推荐
相关产品推荐

