当出现服务器错误时,如何让时间触发脚本重试?

How does one have a time triggered script retry when there is a server error?

我有一个每天早上(早上 5 点到 6 点之间)运行 的脚本:

for (nn=1;nn<datacommit.length;++nn){ 

if (+datacommit[nn][7]==owneremail ) {

if (+datacommit[nn][4]==+datacommit[nn][8] ) { 
   MailApp.sendEmail(datacommit[nn][7], "30 day Commitment Reminder for"+" "+agname,
                     datacommit[nn][2]+","+ " \n " +"It is 30 days before You promised "+ agname + ":"+ " \n"
                     + datacommit[nn][0]+ " \n"
                     + "Please check in with "+" "+ datacommit[nn][3]+ "." + " \n" + htmlBody + ": " + url, {noReply:true})} else {};}

作为对自己的提醒。 (脚本工作得很好。我没有包括所有的变量...只是想展示脚本的作用。)但是,有时我会收到一封电子邮件,说它确实有效,因为 "server error" 和稍候再试。所以,当我收到那封电子邮件时,我假设脚本不会自动重试(直到第二天早上)。那么,有没有办法在服务器出错的情况下自动重新运行呢?也许与记录器?如果记录器捕获服务器错误?

将你的代码放入Try, Catch错误处理语句中,如果有错误,将代码放在catch块中与Utilities.sleep()一起休眠。该代码将在具有睡眠超时的代码行之后的下一行恢复 运行。

Google Documentation - Utilities Sleep

function testTimeout() {
  try {
    var timeIs = new Date();
    Logger.log('Time is: ' + timeIs);
    var makeAnError = functionCallToNowwhere();
  } catch(err) {
    Utilities.sleep(3000);
    var timeIs = new Date();
    Logger.log("Back to Life Now!! " + timeIs);
  }
};