如何避免出现“很抱歉,发生服务器错误。请稍等并重试”时出现 DEADLINE_EXCEEDED。发生?

Bas*_*asj 5 javascript google-apps deadlines google-apps-script gmail-api

我读过类似的问题,例如“我们很抱歉,发生服务器错误。请稍等片刻,然后再试一次。”以及许多其他问题,但它们特定于其他类型的错误。


我有一个 Google Apps 脚本运行和处理带有分钟计时器的 Gmail 电子邮件。

每天我都会通过电子邮件收到日志We're sorry, a server error occurred. Please wait a bit and try again.(请参见下面的屏幕截图 1)。问题在于:

  • 没有发生错误所在行的报告,因此很难调试

  • 它时不时地随机发生,即使在这个精确的时间没有发生任何事情(没有要处理的电子邮件),并且在 99.9% 的时间里,一切正常,没有错误。当没有要处理的电子邮件时,我不明白为什么此代码会失败:

      var mylabel = GmailApp.getUserLabelByName('emailstoprocess'); 
      var threads = mylabel.getThreads();
      for (var i = 0; i < threads.length; i++) {
          // do something
      }
    
    Run Code Online (Sandbox Code Playgroud)
  • 在我的脚本中,我不调用任何外部 API,只调用 Gmail API,并且没有耗时的循环(尤其是当没有新电子邮件时:脚本应该什么都不做)。我怎样才能控制这个DEADLINE_EXCEEDED错误(见下面的截图 #2)?确实在仪表板,Executions页面中,我看到:We're sorry, a server error occurred: DEADLINE_EXCEEDED

DEADLINE_EXCEEDED即使我的脚本在失败时什么也没做,如何避免这个错误? 或者至少如何避免每天收到有关此的通知?

在此处输入图片说明

在此处输入图片说明

Jos*_*uez -1

回答

正如我所看到的,这是您使用 V8 运行时时发生的特定错误。根据所提供的信息,您可以通过使用 Rhino Runtime 来避免这些错误。这不是理想的解决方法,但没有更多信息可供调试。

更改为 Rhino 运行时

编辑清单文件 appscript.json(如果您使用新的脚本编辑器,请转至项目设置 > 标记在编辑器中显示“appsscript.json”清单文件)并将运行时版本更改为STABLEDEPRECATED_ES5,这意味着“将其更改为 Rhino”。

如果错误仍然存​​在

在这种情况下,这可能是 Google Apps 脚本中的问题,您应该按照建议将其发布到Google 问题跟踪器上。

参考

舱单

清单结构