EBOOK · 亲密关系 《别再用关系止痛》已上线:先试看,刺到再买完整版(RM15)

Google Apps Script 触发器完全指南:onEdit、onFormSubmit 与定时触发的底层逻辑

Google Apps Script 触发器完全指南:onEdit、onFormSubmit 与定时触发的底层逻辑

发布时间:2025年12月28日 · 预计阅读时间:20 分钟 · 作者:DAPHNETXG

大多数 Google Apps Script 的系统,不是写坏的,而是触发方式选错后慢慢烂掉的

如果你曾经遇到以下情况:

  • 同一个 Sheet,有时算得对,有时算不对
  • 助理说「我只是改了一个选项,价格就乱了」
  • 你 Run 没问题,但自动跑就出事
  • 你不知道该不该用 onEdit,但又“好像只能用它”

那问题通常不在你的公式,也不在你的算法,而在于:

你把不该交给 Trigger 的事情,交给了 Trigger。

目录

  1. Trigger 到底是什么?
  2. onEdit:最方便,也是最危险的 Trigger
  3. onFormSubmit:为什么它更适合业务系统
  4. Time-driven:你低估了它的价值
  5. 三种 Trigger 的系统级对比
  6. 最常见的 Trigger 误用场景
  7. 一个稳定系统该怎么设计 Trigger
  8. FAQ:Trigger 常见问题

一、Trigger 到底是什么?

很多人把 Trigger 理解成「自动跑代码的东西」,但这不够准确。

更准确的说法是:

Trigger = 你把“什么时候执行”的控制权,交给 Google

一旦用了 Trigger,你就失去了三个控制点:

  • 什么时候执行
  • 执行顺序
  • 是否被重复触发

所以,Trigger 本身不是问题,不该被 Trigger 控制的事情才是问题。


二、onEdit:最方便,也是最危险的 Trigger

onEdit 是最多人使用、也是最多人后悔的 Trigger。

因为它:

  • 不需要额外设置
  • 看起来“很即时”
  • 和用户操作绑定

但问题是——

  • 一次拖拽 = 多次 edit
  • 公式自动回写 = edit
  • 脚本 setValue = edit

也就是说,onEdit 并不知道你“有没有真的改东西”。

系统级结论:

onEdit 只能用来做「轻量 UI 反应」,不能承载业务计算

三、onFormSubmit:为什么它更适合业务系统

onFormSubmit 的关键优势只有一个:

每一次触发,都是一笔“已确认的输入”

它适合:

  • 订单创建
  • 报价生成
  • Invoice 生成
  • 首次写入核心数据

因为:

  • 不会被拖拽触发
  • 不会被脚本反复触发
  • 事件来源清晰

如果你在做「真实收费系统」,onFormSubmit 应该是主干,而不是 onEdit。


四、Time-driven:你低估了它的价值

很多人只在「定时发邮件」时想到 time-driven。

但在系统设计里,它的真正价值是:

把“非即时、但重要”的事情,从用户操作中剥离

适合 time-driven 的事情包括:

  • 批量 recalculation
  • 状态对账
  • 补发失败任务
  • 系统自检

一句话判断法:

如果这件事「晚 5 分钟也没关系」,它就不该绑在 onEdit

五、三种 Trigger 的系统级对比

  • onEdit:即时,但不可控
  • onFormSubmit:稳定,但只发生一次
  • Time-driven:可靠,但非即时

稳定系统的共通点是:

核心计算不依赖 onEdit

六、最常见的 Trigger 误用场景

  • 用 onEdit 算总价
  • 用 onEdit 控制状态流转
  • 在 onEdit 里写复杂逻辑
  • 多个 Trigger 同时改同一行

这些问题不会马上炸,但一定会在业务变复杂时炸。


七、一个稳定系统该怎么设计 Trigger?

一个经过实战验证的结构是:

  • onFormSubmit:创建记录
  • onEdit:只监听「按钮 / checkbox」
  • Time-driven:兜底与修复

所有真正重要的计算:
必须是“可重复、可重跑、与触发无关”的函数。


FAQ:Google Apps Script Trigger 常见问题

为什么我 onEdit 会触发多次?

因为拖拽、公式回写、脚本写入都会触发。

可以完全不用 onEdit 吗?

可以,而且很多稳定系统就是这么做的。

Time-driven 会不会不准时?

会有延迟,但适合非即时任务。

GAS System Design:真实业务中的系统设计与可维护性

更多 Google Apps Script 系统设计内容在这里

回到主题 Hub ↗