0

我在玩触发器。

在电子表格中,我有一个在新行中插入日期的函数。每分钟作为时钟触发器运行。如果电子表格打开或关闭(喜欢该部分),则工作正常。

在一个独立的脚本中,我在上面的电子表格中为 onEdit 设置了一个触发器。它所做的只是通过电子邮件将 e.value 发送给我。

如果我在电子表格中并且只需在单元格中输入一些字符,它就可以工作。

我“期望”的是,每次第一个触发器插入日期时,它都会触发 onEdit。唉,事实并非如此。即使我在触发器之外运行插入日期功能,我的电子邮件 onEdit 触发器也不会触发。

有什么想法吗?

我问,因为我的目标是让脚本更新启动 onEdit 事件的工作表。

吉姆

更新#1:

也许这个代码示例有帮助?

我将其简化为电子表格容器内的一个脚本。如果我对电子表格进行任何交互式更改,每个函数都可以正常工作,第二个函数可以正常工作。

这只是探索,所以请忽略配额或我在这里测试的完全废话:-)

insertClockTrigger:每分钟运行一次,工作正常

installableOnEdit:当 insertClockTrigger 触发时,永远不会作为可安装的 onEdit 触发

我很好奇为什么看起来由 insertClockTrigger 完成的编辑没有触发 onEdit 触发器。触发器不会触发触发器(无法帮助自己!)?

function insertClockTrigger() {
  var sheet = SpreadsheetApp.openById('spreadsheet-ID').getSheets()[0];
  var nDate = new Date();
  sheet.getRange(sheet.getLastRow()+1,1,1,1).setValue(nDate).flush;
}

function installableOnEdit(e) {
  GmailApp.sendEmail("some@email.com", "Test trig2", "FISH: "+e.value);
}
4

3 回答 3

0

想我找到了答案。

恩里克·阿布雷乌 (Henrique Abreu)​​ 发布:

http://productforums.google.com/d/msg/apps-script/HmBg0p7dOZ8/xMb6wfcfvVQJ

是的,从代码进行更改时不会调用“编辑时”事件,仅在手动更改时调用它们。此行为是设计使然,以避免不必要的递归问题。此外,直接从代码中调用所需的编辑功能太容易了。即,当您编写插入新票的脚本时,它可以简单地调用您的“fundEmail”函数,不需要另一个触发器。

于 2012-09-21T17:47:15.637 回答
0

从时钟触发函数调用 onEdit 函数。

此外,每分钟运行一次这样的触发器可能会遇到配额问题。

于 2012-09-21T01:39:39.810 回答
-1

onEdit 应该重命名为 onUserEdit。它不接收系统更改,只接收直接用户编辑。我没有测试过这个,但onChange可以做你想做的。

于 2016-12-17T19:12:39.120 回答