【问题标题】:Timeout error , when try to download mailbox using Email Audit Api via google script超时错误,当尝试通过谷歌脚本使用电子邮件审核 Api 下载邮箱时
【发布时间】:2012-10-31 10:39:10
【问题描述】:

我正在使用电子邮件奥迪 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'
  }; 

}

【问题讨论】:

  • 你能提供一些代码示例吗?任何指向此奥迪 API 的链接?你不能对结果进行分页吗?
  • 我已经更新了上面的代码和电子邮件审核 api 的链接:developers.google.com/google-apps/email-audit

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


【解决方案1】:

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

您需要优化脚本或小批量中断操作。这里有一些优化谷歌脚本的技巧。 Link#1 Linkk#2

【讨论】:

  • 我已经更新了我上面的代码..我的脚本没有那么长来优化它..只有一个进程尝试下载邮箱...有一个典型的场景,有时脚本执行有时它会出错.....如果脚本运行时间少于 10 秒,那么它会执行,否则会出错....那么有什么替代方法吗?
  • 我不确定这个问题。当然,我会尝试在我的域上重现它,但时间紧迫。这个周末我会玩审计 api,如果有任何更新,我会通知你。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 2017-07-31
    相关资源
    最近更新 更多