当出现服务器错误时,如何让时间触发脚本重试?
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);
}
};
我有一个每天早上(早上 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);
}
};