我需要你的帮助。
我有一个活跃的谷歌表单,客户可以在这里注册。当我提交表单时,我有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%的时间;错误";不能让我明白问题出在哪里。
你有什么建议吗?非常感谢您的宝贵帮助。Mauro
在触发器上运行脚本的问题可能是传播问题
将新的表单响应插入电子表格,因此您的数字格式化功能可能会运行在插入新行之前。
你可以做的一件事是在一开始就安排一些等待时间在函数处,例如sleep((。
但是,如果将脚本绑定到目标电子表格而不是表单本身-你将能够使用谷歌图纸事件对象对于包括CCD_ 2的CCD_。
示例用法:
function respondToFormSubmit(e) {
var row = e.range.getRow();
var sheet = e.range.getSheet();
sheet.getRange("F" + row).setNumberFormat('yyyy-mm-dd');
sheet.getRange("J" + row).setNumberFormat('yyyy-mm-dd');
sheet.getRange("K" + row).setNumberFormat('yyyy-mm-dd');
sheet.getRange("A" + row).setNumberFormat('yyyy-mm-dd');
};