问题描述
我需要你的帮助。
我有一个有效的谷歌表单供客户注册。 当我提交表单时,我有 3 个运行脚本的激活器,尤其是它们将意大利日期格式 (dd-mm-yyyy) 转换为美国 (yyyy-mm-dd)。
行动开始:提交表单后
我发现的问题是这个。 即使从控制面板中我发现这些脚本已正确执行而没有报告错误,这些脚本也并不总是有效。
代码示例:
function respondToFormSubmit() {
var ss = SpreadsheetApp.openById("xxxxxxxxxxxxxxxxxxxxxxxx");
var sheet = ss.getSheets()[0];
// Format column I
var column1 = sheet.getRange("F:F");
var column2 = sheet.getRange("J:J");
var column3 = sheet.getRange("K:K");
var column4 = sheet.getRange("A:A");
// Set new date format on column I
column1.setNumberFormat('yyyy-mm-dd');
column2.setNumberFormat('yyyy-mm-dd');
column3.setNumberFormat('yyyy-mm-dd');
column4.setNumberFormat('yyyy-mm-dd');
};
出现问题时,所有 3 个触发器都失败。 无法正常工作的发生率为 20/30%,这种不连续的“错误”并没有让我明白问题是什么。
你对我有什么建议吗? 非常感谢您的宝贵帮助。 毛罗
解决方法
您的脚本在触发器上运行的问题可能是传播 问题
将新的表单响应插入到 电子表格,因此您的数字格式功能可能会运行 在插入新行之前。
你可以做的一件事是在开始时实施一些等待时间 在函数中,例如和 sleep()。
但是,如果您将脚本绑定到目标电子表格
而不是表单本身 - 您将能够使用 Google
Sheets event
objects
对于 sudo apt install libsqlite3-dev
,其中包括 Form submit
。
示例用法:
range