将变量从简单触发器传递到Installable触发器

时间:2016-08-23 08:06:54

标签: google-apps-script google-sheets

我知道可安装的触发器作为脚本的作者运行。但是某些服务(如email service)仅适用于可安装的触发器。

我需要使用简单的触发器来检查当前用户是否有权编辑特定范围和可安装的触发器来发送电子邮件。

我有这样的代码:

var MY_VARIABLE;

function onEdit() {    
  MY_VARIABLE = 'onEdit was here!'     
}

function myOnEdit() {
// installable trigger
    Browser.msgBox(MY_VARIABLE);

    // send email, use email service
}

结果为undefined

我愿意'onEdit was here!'

1 个答案:

答案 0 :(得分:2)

如果您写的内容如下:

function onEdit() {    
  MY_VARIABLE = 'onEdit was here!';
  myOnEdit();  
}

function myOnEdit() {
    Browser.msgBox(MY_VARIABLE);
}

它会起作用。但如果" myOnEdit"不是和#34; onEdit"同时打电话。脚本会忘记一切。每次触发条带时(onEdit或手动启动一个函数),环境都会被重置,并且内容为" MY_VARIABLE"被遗忘了 Wim den Herder proposed对他的评论是一个很好的解决方案,你需要存储" MY_VARIABLE"通过脚本的差异实例,Google Apps脚本可以记住这个值。这就是propertyService允许的内容。最后一件事,propertyService需要授权才能运行。因此,你无法真正使用一个名为" onEdit"要在每次修改单元格时运行它,你需要重命名该函数(无论你想要什么)并在其上设置一个onEdit触发器。