首页 > 解决方案 > 当项目被附加并发布时,我想了解 GAS 的 SpreadsheetTriggerBuilder

问题描述

我正在开发 google-sheets 插件。

我想创建创建与单个电子表格关联的触发器的函数。我认为 GAS SpreadSheetTriggerBuilder实现了这个功能,但我不知道项目加载和发布时的行为。

加载项用户添加到每个电子表格的触发器将被共享?

例如,A 和 B 将加载项安装到他们自己的电子表格中。A 用 add-on 添加触发器,然后 B 将能够使用 A 添加到工作表的触发器??

标签: google-apps-scriptgoogle-sheetsspreadsheeteventtrigger

解决方案


使用SpreadSheetTriggerBuilder构建触发器时,将创建一个可安装的触发器

这表示:

  • 触发器在创建它的人的授权下运行 - 并将代表安装触发器的人执行绑定功能
  • 换句话说 - 如果您的插件安装了onEdit触发器 - 此触发器将为所有编辑电子表格的用户触发,但被授权为安装触发器的人
  • 但是,当您构建触发器时,它仅适用于您需要定义的特定电子表格,例如
var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger("myFunction")
  .forSpreadsheet(sheet)
  .onEdit()
  .create();
  • 也就是说,如果用户 A 在打开电子表格 A 时创建触发器 A,而用户 B 在打开电子表格 B 时创建触发器 A - 这些触发器不会推断。触发器 A 仅在编辑电子表格 A 时触发,触发器 B 仅在编辑电子表格 B 时触发。

推荐阅读