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

如何在Google Sheets中检测单元格删除删除线格式并触发邮件通知?

解决Google表格删除线格式移除触发邮件的方案

核心思路

借助Google Apps Script的onChange触发器,结合**文档级临时缓存(Cache Service)**记录单元格的删除线状态——缓存仅存储格式标识而非敏感内容,完全符合数据管控要求,以此实现添加/删除删除线的动作区分。

具体实现步骤

  • 绑定onChange触发器到目标表格,触发事件类型选择「更改」。
  • 当检测到FORMAT类型的变更时,先获取当前操作范围单元格的删除线状态。
  • 对比缓存中存储的历史状态,仅当历史状态为删除线、当前状态为无删除线时,判定为删除线移除操作,触发邮件通知。
  • 更新缓存为当前最新状态,设置合理的缓存有效期(比如1小时,可根据团队使用频率调整)。

示例代码

function handleFormatChange(e) {
  // 仅处理格式变更事件
  if (e.changeType !== 'FORMAT') return;
  
  const cache = CacheService.getDocumentCache();
  const targetRange = e.source.getActiveRange();
  // 用单元格A1标识作为缓存键
  const cacheKey = `strike_${targetRange.getA1Notation()}`;
  
  // 获取当前单元格的删除线状态
  const currentStatus = targetRange.getFontLine();
  // 从缓存读取上次记录的状态
  const previousStatus = cache.get(cacheKey);
  
  // 判断是否为删除线移除操作
  if (previousStatus === 'line-through' && currentStatus === 'none') {
    // 发送通知邮件
    MailApp.sendEmail({
      to: '相关人员邮箱@domain.com',
      subject: '表格删除线格式已移除',
      body: `单元格 ${targetRange.getA1Notation()} 的删除线格式已被移除,请留意。`
    });
  }
  
  // 更新缓存,有效期设为3600秒(1小时)
  cache.put(cacheKey, currentStatus, 3600);
}

补充说明

  • 缓存局限性:缓存会在过期或文档会话结束后清空,若用户两次操作间隔超过缓存有效期,可能无法准确判断状态,可根据实际场景延长有效期。
  • 批量操作适配:如果用户批量修改多个单元格,需遍历范围里的每个单元格单独处理状态对比(示例为简化版,批量场景需补充循环逻辑)。
  • 权限要求:首次运行脚本需手动授权邮件发送权限,确保脚本能正常触发通知。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:38:13