有没有一种方法可以发布使用OnEdit触发器的加载项?

时间:2020-08-10 06:25:11

标签: google-apps-script triggers google-apps-script-addon

我目前正在开发一个预算附加组件,该组件可使用户在输入交易金额时自动更新其每月交易总额,无论是收入还是支出。加载项使用可安装的触发器onMyEdit(e)更新每月交易金额。例如,如果用户在1月份输入单元格A1花费了5美元,则1月份的费用单元格将使用=SUM(A1)更新该单元格。该脚本具有一个设置菜单,用户可以键入该菜单,以便知道电子表格的边界。该脚本维护用户通过使用documentProperty进行管理而输入的设置。在文档中,我发现简单触发器无法在加载项上使用,因为它们没有授权,而且我也不知道可安装触发器是否也可以使用。

我可以发布使用此可安装触发器onMyEdit(e)的加载项吗?我是否应该使用“在此文档上启用”复选框更新设置菜单,以便脚本知道要启用哪个电子表格,或者放弃使用onEdit加载项的整个想法?

这是我的第一个堆栈溢出帖子,如果您需要更多说明,请告诉我。我对使用Google Apps脚本能做什么感到非常困惑。感谢您关注我的问题。

1 个答案:

答案 0 :(得分:0)

如何在附加组件中使用触发器

如附加组件触发器文档中所述,您可以在附加组件中同时使用简单和onEdit可安装的触发器-根据您希望使用的触发器类型的不同,限制会有所不同

重要的是要了解针对特定附件的情况:

附加组件可以通过Apps脚本脚本服务以编程方式创建和修改可安装的触发器。无法手动创建附加的可安装触发器。与简单触发器不同,可安装触发器可以使用需要授权的服务。

请参阅: Installable triggers in add-ons

如何为附加组件创建可安装的触发器,以及脚本如何知道用户正在使用的工作表?

流程如下:

  • 创建一个简单的onOpen触发器,该触发器将为已打开的特定电子表格创建自定义菜单
  • 绑定到自定义菜单的功能将以编程方式buildonEdit触发
  • 以编程方式构建触发器时,您需要将触发器链接指定为参数to which spreadsheet
  • 显而易见的选择是活动电子表格,即运行自定义菜单功能的电子表格。

示例:

function onInstall(e) {
  onOpen(e); 
}
function onOpen(e) {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
  .addItem('Add a trigger', 'addTriggers')
  .addToUi();
}


function addTriggers() {
  var ss = SpreadsheetApp.getActive();
  ScriptApp.newTrigger('doItOnEdit')
    .forSpreadsheet(ss)
    .onEdit()
    .create();     
  }
function doItOnEdit(){
  console.log("An edit has taken place");
}