我在玩触发器。
在电子表格中,我有一个在新行中插入日期的功能。每分钟作为时钟触发器运行。如果电子表格处于打开或关闭状态(喜欢该部分),则可以正常工作。
在独立脚本中,我在上面的电子表格中为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);
}
答案 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
可能会做你想要的。