尝试使用电子邮件审核Api通过谷歌脚本下载邮箱时出现超时错误

时间:2012-10-31 10:39:10

标签: google-apps-script google-email-audit-api

我正在使用Email Audi API以加密形式下载用户的邮箱..当我将代码写入谷歌脚本并尝试运行时,它会出现错误504:超时错误..当我使用OAuth游乐场时,我成功了下载邮箱..所以请给我一些建议来解决这个问题。

Code :
function downloadMailBox(user){
var user='user@mydomain.com'
var base='https://apps-apis.google.com/a/feeds/compliance/audit/'
var fetchArgs=googleOAuth_('google',base)
var userID=user.split('@')[0]
//Logger.log(userID)
var rawXml='<atom:entry xmlns:atom="http://www.w3.org/2005/Atom" xmlns:apps="http://schemas.google.com/apps/2006">'+
    '<apps:property name="packageContent" value="FULL_MESSAGE"/></atom:entry>'
    fetchArgs.payload=rawXml
var uriForMailbox=base+'mail/export/mydomain.com/'+userID
UrlFetchApp.fetch(uriForMailbox,fetchArgs)
}


function googleOAuth_(name,scope) {
  var oAuthConfig = UrlFetchApp.addOAuthService(name);
  oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
  oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
  oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
  oAuthConfig.setConsumerKey("mydomain.com");
  oAuthConfig.setConsumerSecret(consumersecret);
  return {oAuthServiceName:name, 
  oAuthUseToken:"always",
  contentType:'application/atom+xml',
  method:'POST'
  }; 

}

2 个答案:

答案 0 :(得分:0)

经过多长时间,您收到错误?谷歌的脚本执行时间限制约为5分钟。任何花费时间超过此时间的脚本都会超时。还有其他限制。您可以查看Apps Script Dashboard上的详细信息。

您需要优化脚本或小批量中断操作。以下是优化Google脚本的一些提示。 Link#1 Linkk#2

答案 1 :(得分:0)

我找到了一个这样的解决方案...我刚刚将上面的代码写入了try-catch块。随着超时错误的到来,它会进入catch块,我再次调用函数downloadmailBox()。(有时脚本执行正常并且有时会出错。)它会一次又一次地调用此函数,直到获得成功。可能它在2或3次尝试中获得成功......所以通过这种方式,可以解决超时问题。