触发器有时不起作用,我不明白为什么



我需要你的帮助。

我有一个活跃的谷歌表单,客户可以在这里注册。当我提交表单时,我有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'); 
}; 

相关内容

  • 没有找到相关文章

最新更新