繁体   English   中英

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

[英]How to retry DriveApp.getFileById, if error occurs, until successful

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

也许您可以将此部分包装在try-catch块中,然后循环调用直到完成复制。 在主函数中,可以调用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;}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM