You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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:手动创建触发器

  1. 打开表格右上角「扩展程序」→「Apps Script」进入编辑器
  2. 点击左侧时钟图标「触发器」,选择「添加触发器」
  3. 配置参数:
    • 运行函数:clearTargetCells
    • 部署类型:时间驱动
    • 事件源:基于时间的计时器
    • 时间类型:周计时器
    • 设定具体执行时间(如每周一上午9点)
  4. 点击「保存」并完成授权

使用说明

  1. 手动操作:可以在脚本编辑器中直接运行函数,也可添加自定义菜单一键操作(代码如下):
// 给表格添加顶部自定义菜单
function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu("自定义操作")
    .addItem("清除指定单元格", "clearTargetCells")
    .addItem("撤销清除", "undoClear")
    .addToUi();
}
  1. 撤销限制:撤销操作仅保留最近一次清除的备份,多次清除后只能恢复最后一次的数据
  2. 备份表管理:备份表默认隐藏,如需查看可右键表格底部标签→「取消隐藏」

内容的提问来源于stack exchange,提问作者Mahmood_M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:45:33