我创建了一个保存在Google表单响应电子表格中的函数。在提交表单时,它会将每个数据点并将其填充到保存在驱动器上的Google Word文档中,然后创建文档的PDF并通过电子邮件将其发送给提交表单的个人。
大约5%的时间,在函数调用DriveApp.getFileById(docTemplate)的代码阶段发生错误。错误始终相同"我们很抱歉,发生了服务器错误。请稍等一下再试一次。 (第186行,文件"代码")"
我认为这是一个网络问题,并且由于用户与互联网连接不良,因此无法打开docTemplate文件,因此会出错。
我想创建某种循环,在成功完成函数之前多次尝试该函数。当错误发生时,在管理上确保用户及时获取文档是一件巨大的痛苦!
我的代码相当长。它首先设置变量,然后使用一些if来进一步定义一些变量,然后直接进入:
var copyId = DriveApp.getFileById(docTemplate) //line 186
.makeCopy(docName+' for '+ name) //line 187
.getId(); //line 188

然后保存并关闭文档,将临时文档转换为PDF,然后发送带附件的电子邮件。
同样,该程序在95%的时间内完美运行,没有任何问题。似乎可能是因特网连接问题。
答案 0 :(得分:0)
也许你可以将这个部分包装在try-catch块中,然后在循环中调用它直到复制完成。在main函数中,您可以调用copyTemplate(),直到返回值不为null。
function copyTemplate(docTemplate, docName, name) {
try {
var copyId = DriveApp.getFileById(docTemplate) //line 186
.makeCopy(docName+' for '+ name) //line 187
.getId();
return copyId;
} catch (e) {return null;}
}