【问题标题】:How do I debug intermittent errors with CalendarApp?如何使用 CalendarApp 调试间歇性错误?
【发布时间】:2012-12-13 15:32:45
【问题描述】:

我有一个 Google Apps 脚本,它使用 JSON Web API 从网站(使用 UrlFetchApp)获取 StarCraft2 锦标赛的列表,并在各种日历中创建相应的 Google 日历事件(每个地区/联盟组合一个日历)。

我将触发器设置为每 5 分钟一次,它会在出现错误时立即向我发送电子邮件,如果脚本正常完成并添加了任何事件或遇到了我捕获的任何错误,它也会向我发送电子邮件。

大多数时候,不需要进行任何更改(我使用 ScriptDb 缓存 JSON 信息以避免调用 CalendarApp,除非我需要)并且脚本是静默的。然而,一夜之间,我收到了几封包含这些消息的电子邮件:

The resource you requested could not be located. (line 154)

Service error: CalendarApp: Error body {font-family: arial,sans-serif}
G o o g l e     Error   Cannot access the calendar you requested (line 155)

TypeError: Cannot call method "getEvents" of null. (line 155)

第 154、155 和 156 行是:

var calendar = CalendarApp.getCalendarById(calendars[region][league]);
var events = calendar.getEvents(new Date(1900, 1, 1), new Date());
events.forEach(function (event) { event.deleteEvent(); });

在脚本中的这一点上,我已经尝试添加任何新事件,并且我将查询我的每个日历以删除过去发生的任何事件。

这些错误似乎与 CalendarApp 的可用性有关,但 Dashboard 并不表示该服务有任何问题。

我的项目密钥是:MWhWmFSrL1dK3RJui6Aphb12cA4KNgw7R

【问题讨论】:

    标签: google-apps-script google-calendar-api


    【解决方案1】:

    我有许多使用 CalendarApp 的脚本,并且它们在执行过程中偶尔会出现错误,无论是手动模式还是时间触发,似乎(但我知道这是一种经验感觉)当流量太高或互联网连接太慢时,服务会出错(几个月前,我的办公室的互联网连接很差,脚本用于生成很多错误 - 而在家执行时没有 - 现在情况更好了,相同的脚本在任何地方都可以顺利运行)。

    无论如何,无论真正的原因是什么(只有 Google 工程师可以回答),我使用的解决方案是将日历调用置于尝试连接几次的 try-catch 循环中,从那时起我没有错误通知了。

    在我尚未更改的另一个脚本上,我时常会收到错误消息,但由于它不涉及关键信息,我并不介意...请注意,我现在刚刚检查过,我还没有5天没有收到任何通知! (一定是日历的好季节;-)

    【讨论】:

    • 我认为客户端计算机的互联网连接并不重要,因为代码是在云端某处的 Google 主机上运行的。我在上面引用的行中添加了一个 try-catch 块,这样我就可以更优雅地失败了。 (我已经在 try 块中添加了主要事件的代码)。
    • 我同意它不应该有任何影响,但那是我的感觉......当然,这个速度问题只有在我“手动”运行脚本时才明显,而不是在计时器触发时。
    • 也许在某处写一个 try/catch 结果日志来获取一些统计数据会很有趣...
    • 是的,这正是我正在做的。它是我 Logger.log 错误的 catch 块以及我试图做的事情并增加一个 errorCount 变量。如果最后errorCount > 0,我发邮件Logger.getLog()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多