1

我有一个 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 的可用性有关,但仪表板并未表明该服务有任何问题。

我的项目关键是:MWhWmFSrL1dK3RJui6Aphb12cA4KNgw7R

4

1 回答 1

2

我有许多使用 CalendarApp 的脚本,它们在执行时偶尔会出现错误,无论是手动模式还是时间触发,似乎(但我知道这是一种经验性的感觉)当流量太大时,该服务会出现错误高或互联网连接太慢(几个月前,我的办公室的互联网连接非常差,脚本曾经产生很多错误 - 而在家执行时没有 - 现在情况更好了相同的脚本到处都能顺利运行)。

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

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

于 2012-12-13T18:25:16.250 回答