首页 文章

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

提问于
浏览
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);
}

3 回答

  • 0

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

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

  • 0

    我想我找到了答案 .

    Henrique Abreu发布:

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

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

  • -1

    应该将onEdit重命名为onUserEdit . 它没有测试过这个,但 onChange 可能会做你想要的 .

相关问题