借助触发器,Apps 脚本可以在发生特定事件(例如打开文档)时自动运行函数。简单触发器是内置于 Apps 脚本中的一组预留函数,例如 onOpen(e)
函数,当用户打开 Google 文档、表格、幻灯片或表单文件时,该函数会执行。
可安装的触发器比简单触发器提供更多功能,但必须先激活才能使用。对于这两种类型的触发器,Apps 脚本都会向触发的函数传递一个事件对象,其中包含有关事件发生时上下文的信息。
使用入门
如需使用简单触发器,只需创建一个使用以下任一预留函数名称的函数即可:
- 当用户打开有权修改的电子表格、文档、演示文稿或表单时,
onOpen(e)
会运行。 onInstall(e)
在用户从 Google 文档、表格、幻灯片或表单中安装编辑器插件时运行。- 当用户更改电子表格中的值时,
onEdit(e)
会运行。 - 当用户更改电子表格中的选择时,
onSelectionChange(e)
会运行。 - 当用户访问Web 应用或程序向 Web 应用发送 HTTP
GET
请求时,doGet(e)
会运行。 - 当程序向 Web 应用发送 HTTP
POST
请求时,doPost(e)
会运行。
上述函数名称中的 e
参数是传递给函数的事件对象。该对象包含有关导致触发器触发的上下文的信息,但使用它是可选的。
限制
由于简单触发器会自动触发,无需征得用户授权,因此会受到以下几项限制:
- 脚本必须绑定到 Google 表格、幻灯片、文档或表单文件,否则必须是扩展其中一个应用的插件。
- 如果文件在只读(查看或评论)模式下打开,这些脚本不会运行。
- 脚本执行和 API 请求不会导致触发器运行。例如,调用
Range.setValue()
来修改单元格不会导致电子表格的onEdit
触发器运行。 - 他们无法访问需要授权的服务。例如,简单触发器无法发送电子邮件,因为 Gmail 服务需要授权,但简单触发器可以使用匿名的 Language 服务翻译短语。
- 他们可以修改自己绑定的文件,但无法访问其他文件,因为这需要获得授权。
- 它们可能能够确定当前用户的身份,也可能无法确定,具体取决于一组复杂的安全限制。
- 时长不得超过 30 秒。
- 在某些情况下,编辑器插件会在无授权模式下运行其
onOpen(e)
和onEdit(e)
简单触发器,这会带来一些额外的复杂情况。如需了解详情,请参阅插件授权生命周期指南。 - 简单触发器受 Apps 脚本触发器配额限制的约束。
这些限制不适用于 doGet(e)
或 doPost(e)
。
onOpen(e)
当用户打开有权修改的电子表格、文档、演示文稿或表单时,onOpen(e)
触发器会自动运行。(在回复表单时,触发器不会运行,只有在打开表单进行修改时才会运行。)onOpen(e)
最常用于向 Google 表格、幻灯片、文档或表单添加自定义菜单项。
onInstall(e)
当用户从 Google 文档、表格、幻灯片或表单中安装编辑器插件时,onInstall(e)
触发器会自动运行。当用户从 Google Workspace Marketplace 网站安装插件时,触发器不会运行。请注意,onInstall(e)
可以执行的操作存在一些限制,如需详细了解授权,请参阅相关文档。
onInstall(e)
最常见的用途是仅调用 onOpen(e)
来添加自定义菜单。毕竟,安装插件后,文件已处于打开状态,因此除非重新打开文件,否则 onOpen(e)
不会自行运行。
onEdit(e)
当用户更改电子表格中任何单元格的值时,onEdit(e)
触发器会自动运行。大多数 onEdit(e)
触发器都会使用事件对象中的信息来做出适当的响应。例如,以下 onEdit(e)
函数会在记录上次修改时间的单元格中设置注释。
onSelectionChange(e)
当用户更改电子表格中的选择时,onSelectionChange(e)
触发器会自动运行。如需激活此触发器,您必须在添加触发器后以及每次打开电子表格时刷新电子表格。
如果选择在短时间内在多个单元格之间移动,系统可能会跳过一些选择更改事件,以减少延迟时间。例如,如果在两秒内进行了多次选择更改,则只有第一次和最后一次选择更改会触发 onSelectionChange(e)
触发器。
在以下示例中,如果选择的是空单元格,onSelectionChange(e)
函数会将该单元格的背景设置为红色。
doGet(e)
和doPost(e)
当用户访问网络应用或程序向网络应用发送 HTTP GET
请求时,doGet(e)
触发器会自动运行。当程序向网络应用发送 HTTP POST
请求时,doPost(e)
触发器会运行。如需详细了解这些触发器,请参阅网络应用、HTML 服务和内容服务指南。请注意,doGet(e)
和 doPost(e)
不受上述限制的约束。
可用的触发器类型
如果对简单触发器的限制导致它们无法满足您的需求,那么可安装的触发器或许可以解决问题。下表总结了每种事件类型可用的触发器类型。例如,Google 表格、幻灯片、表单和文档都支持简单的打开触发器,但只有表格、文档和表单支持可安装的打开触发器。
事件 | 简单触发器 | 可安装的触发器 |
---|---|---|
打开 |
![]() ![]() ![]() ![]()
|
![]() ![]() ![]() |
修改 |
![]()
|
![]() |
选择更改 |
![]()
|
|
安装 |
![]() ![]() ![]() ![]()
|
|
更改 |
![]() |
|
表单提交 |
![]() ![]() |
|
时间驱动(时钟) |
![]() ![]() ![]() ![]() ![]() |
|
获取 |
![]()
|
|
帖子 |
![]()
|
* 当用户打开表单进行回答时,不会触发 Google 表单的打开事件,而当编辑者打开表单进行修改时,才会触发该事件。