时钟触发更新电子表格,Installable Trigger onEdit未运行

时间:2012-09-20 20:50:14

标签: google-apps-script

我在玩触发器。

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

在独立脚本中,我在上面的电子表格中为onEdit设置了一个触发器。它只是给我发电子邮件。

如果我在电子表格中,只需输入单元格中的某些字符,就可以了。

我所期望的是每次第一次触发器插入日期时,它都会触发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);
}

3 个答案:

答案 0 :(得分:0)

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

此外,您可能会遇到每分钟运行此类触发器的配额问题。

答案 1 :(得分:0)

想想我找到了答案。

Henrique Abreu发布:

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

  

是,当进行更改时,不会调用“on edit”事件   代码,它们仅用于手动更改。这种行为   旨在通过设计,以避免不必要的递归问题。   此外,只需调用所需的编辑功能即可   直接来自您的代码。即当您编写插入新内容的脚本时   票证这样,它可以简单地称你的“fundEmail”功能,   没有必要再触发。

答案 2 :(得分:-1)

onEdit应该重命名为onUserEdit。它不会接收系统更改,只会直接进行用户编辑。 我还没有对此进行测试,但onChange可能会做你想要的。