Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script onEdit能否以编程方式创建触发器?_Google Apps Script - Fatal编程技术网

Google apps script onEdit能否以编程方式创建触发器?

Google apps script onEdit能否以编程方式创建触发器?,google-apps-script,Google Apps Script,我编写了一个简单的脚本,试图通过编程从onEdit函数创建一个脚本 function onEdit() { test(); } function test() { triggerLater(); } function customMsgBox() { Browser.msgBox("hello world"); } function triggerLater() { var date = new Date(); date.setMinutes(date.getMinut

我编写了一个简单的脚本,试图通过编程从onEdit函数创建一个脚本

function onEdit() {
  test();
}

function test() {
  triggerLater();
}

function customMsgBox() {
  Browser.msgBox("hello world");
}

function triggerLater() {
  var date = new Date();
  date.setMinutes(date.getMinutes() + 1);
  try {
    var oneTimeOnly = ScriptApp.newTrigger("customMsgBox")
      .timeBased()
      .at(date)
      .create();
    return oneTimeOnly.getUniqueId();
  }
  catch (e) {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    ss.toast("error");
  }
}
如果我尝试从脚本编辑器运行OneEdit,则会创建触发器,但电子表格上的每一次编辑都会在toast中得到一条“错误”消息


有人能帮我理解吗?

简单事件处理程序函数的权限有限(即它不能发送电子邮件、打开日历等)。因为它在没有用户权限的情况下运行。因此,它不能设置触发器(没有任何限制,这将是一个巨大的安全漏洞)


如果您希望在您的帐户下创建触发器,请使用可安装的编辑触发器。首先,将onEdit函数重命名为其他函数(这样它就不会作为简单的事件处理程序触发),然后转到“资源”菜单,选择要在电子表格编辑事件上运行的函数。更多信息,请查看。

我希望我发现了一个漏洞:我尝试阅读文档,但找不到与以编程方式创建触发器的限制相关的内容。。。我错过了,或者是文档中缺少了?没有关于触发器创建的具体信息。但是关于简单事件处理程序的第三个要点说,任何需要用户授权的事情都不能做,包括它。很明显,您不应该能够从有限的代码中触发特权代码。这将是一个巨大的安全问题。我知道这可能是一个巨大的安全问题。。。我尝试是因为没有关于。。。非常感谢;)安全页面上有特定信息,其中显示“简单事件,如onOpen、OneEdit和onInstall,以操作电子表格的用户的身份执行。可安装事件(电子表格触发器)以创建触发器的用户的身份执行。”仅供参考,如果您在变量“e”中设置了值您将能够看到确切的错误消息。