Google Scripts onEdit无法识别从移动设备同步过程中在工作表上编辑的数据

时间:2016-09-14 06:38:12

标签: google-apps-script

我有一张Google表格,该表格由在AppSheet上创建的移动应用程序更新。 我有一列数据,我需要保留历史记录,所以编写了一个脚本,将列复制到另一张表中的fblank列。

function readdailyChecks() {
    var sheetFrom = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Todays Checks");
    var sheetTo = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("History");
    // Copy from 5th column, all rows for one column 
    var valuesToCopy = sheetFrom.getRange("D2:D100").getValues()
    //Paste to another sheet from first cell onwards
    sheetTo.getRange(1,sheetTo.getLastColumn()+1,valuesToCopy.length,1).setValues(valuesToCopy);
}

然后我在编辑工作表时编写了另一个脚本来执行此任务,以为同步会编辑工作表数据。

function onEdit(e) {
    if(e); 
   readdailyChecks(e)
}

这个想法是应用程序会在表单完成后同步,更新工作表并触发onEdit代码来执行此操作。 问题是同步会更改工作表数据而不进行编辑,因此不会创建历史数据!

是否有onSync代码或方式,当数据发生变化时,可以触发脚本?

2 个答案:

答案 0 :(得分:0)

official documentation描述了可用的触发器。当用户执行操作时,将触发编辑,打开,更改,表单提交。

另一种方法是让您的应用调用您的Google Apps脚本功能。一种方法是使用google.script.run (Client-side API)

答案 1 :(得分:0)

我在AppSheet工作。通过Google表格后端API对Google表格进行更新时,他们不会触发onEdit触发器。我不确定为什么会这样,但这是Google强加的限制。这就是你所观察到的。

AppSheet文档建议您尝试定时触发器,轮询更改。 https://appsheethelp.zendesk.com/hc/en-us/articles/206483017-Google-Drive

不是最好的,但确实有效。一些AppSheet用户使用onChange触发器而不是onEdit触发器报告成功。对我来说,这违背了onChange触发器上记录的含义的逻辑,但它似乎适用于这些用户,所以值得一试。