2012-09-20 84 views
0

我正在玩触发器。时钟触发器更新电子表格,安装触发器onEdit未运行

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

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

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

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

有什么想法?

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

吉姆

更新#1:

也许此代码示例帮助?

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

这仅仅是探索,所以请忽略配额的或者什么,我这里测试:-)

insertClockTrigger的胡说八道:运行,每分钟,做工精细

installableOnEdit:从不触发作为可安装onEdit当insertClockTrigger触发

我很好奇为什么看起来是由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("[email protected]", "Test trig2", "FISH: "+e.value); 
} 

回答

0

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

此外,您可能每分钟都会触发一次配额问题,以便运行此类触发器。

0

想我找到了答案。

恩里克阿布雷乌贴:“在编辑”事件

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

是的,当更改从 使代码不叫,他们被称为仅为手动更改。此行为 旨在通过设计,以避免不必要的递归问题。 此外,它只是简单地直接从您的代码调用您想要的编辑功能 。即当你插入一个新的 票据的脚本这样做时,它可以直接调用你的“fundEmail”函数, 不需要另一个触发器。

-1

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