1

我设置了一个 Google Apps 脚本触发器来检查表单提交。但是,我想检查传入的事件值并确定是否应该将事件实际添加到电子表格中或忽略。

现在我正在做类似下面的事情来删除添加后的最后一行。

function onFormSubmit(e) {
    var sheet = SpreadsheetApp.getActiveSheet();
    if (e.values[2] < whatever) {
        sheet.deleteRow(sheet.getLastRow());
}

然而,这种方法有时会失败,我认为是因为并发事件。

有一个更好的方法吗 ??

4

2 回答 2

3

您需要多快移除行?使用时间驱动的触发器定期清理工作表是否可行?

或者,使用表单提交触发器,您可以使用 e.range 清除(而不是删除)行,然后使用时间驱动的触发器清除空白行。

或者,使用表单提交触发器,您可以选择不接触原始数据提交,而是使用另一个工作表(或电子表格)来记录接受的 e.values appendRow(),它以原子方式附加,绕过并发问题。

或者,您可以通过在另一个工作表中使用 FILTER 或 QUERY 公式来实现相同的目的,但这可能会对性能产生最大的影响。

于 2012-10-12T05:23:23.737 回答
1

如果由于并发事件而失败,请查看Lock 服务

于 2012-10-12T02:49:58.367 回答