You need to enable JavaScript to run this app. Apps Script如何捕获Sheets API修改单元格后的旧值实现变更通知
优惠活动
大模型
产品
解决方案
定价
更多

Apps Script如何捕获Sheets API修改单元格后的旧值实现变更通知

实现方案

你需要用可安装的onChange触发器替换原有的简单onEdit触发器,同时通过文档属性存储上一次A2单元格的值做对比,具体步骤如下:

步骤1:替换Apps脚本代码

删除原有onEdit代码,替换为以下代码:

// 用于响应API/外部修改的变更触发器函数
function onChange(e) {
  // 获取当前A2单元格的值
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Notifications');
  const currentA2 = sheet.getRange('A2').getValue().toString();
  
  // 从文档属性中读取上一次存储的A2值
  const docProps = PropertiesService.getDocumentProperties();
  const oldA2 = docProps.getProperty('lastA2Value');

  // 第一次运行无历史值时直接存储,不触发通知
  if (!oldA2) {
    docProps.setProperty('lastA2Value', currentA2);
    return;
  }

  // 仅当值发生变更时触发弹窗
  if (oldA2 !== currentA2) {
    Browser.msgBox(`A2值已更新:从 ${oldA2} 变为 ${currentA2}`);
    // 更新存储的A2值为最新值
    docProps.setProperty('lastA2Value', currentA2);
  }
}

步骤2:手动安装可安装触发器

简单触发器无法捕获API修改、也没有足够权限触发弹窗,必须手动配置可安装触发器:

  1. 打开你的Google Sheet,点击顶部菜单栏「扩展程序」->「Apps脚本」进入脚本编辑器
  2. 点击左侧菜单的「触发器」按钮(时钟图标)
  3. 点击右下角「添加触发器」
  4. 按以下参数配置:
    • 选择要运行的函数:onChange
    • 选择要部署的项目:默认值即可
    • 选择事件来源:电子表格
    • 选择事件类型:更改
  5. 点击保存,按提示完成Google账号授权即可。

补充说明

  • 弹窗通知仅在你当前打开该Google Sheet页面时生效,如果需要在未打开表格时也能收到通知,可以将代码中的Browser.msgBox替换为MailApp.sendEmail('你的邮箱地址', '表格有新更新', A2值已更新:从 ${oldA2} 变为 ${currentA2})实现邮件通知。
  • 第一次运行触发后会自动初始化存储A2的基准值,后续仅当Python脚本更新后A2值和上一次不一致时才会触发通知。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 07:39:04