如果发生错误,如何重试DriveApp.getFileById,直到成功为止

时间:2015-02-03 23:58:31

标签: javascript forms google-apps

我创建了一个保存在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%的时间内完美运行,没有任何问题。似乎可能是因特网连接问题。

1 个答案:

答案 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;}
}