2012-12-13 21 views
1

我有一個Google Apps腳本,它使用JSON Web API從站點獲取星際爭霸2錦標賽列表(使用UrlFetchApp),並在各種日曆(每個地區/聯盟組合的一個日曆)中創建相應的Google日曆活動。如何使用CalendarApp調試間歇性錯誤?

我有一個觸發設置爲每隔5分鐘,即電子郵件我馬上就錯誤,如果腳本正常完成,並添加任何事件或碰上我抓住了,它的郵件我以及任何錯誤。

大部分時間裏,有和腳本是無聲無必要的修改(使用ScriptDb中避免呼喚CalendarApp除非我需要我緩存JSON的信息)。然而,一夜之間我收到含有消息幾封電子郵件:

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

回答

2

我已經使用CalendarApp和他們都在自己的執行有偶然的錯誤許多腳本,羯羊在手動模式或時間觸發,似乎(但我知道這是一個經驗感覺),該服務存在誤差時,流量過高或互聯網連接速度太慢(幾月前,我的辦公室有一個非常貧窮的互聯網連接和用於產生錯誤很多腳本 - 而當它在家裏執行時沒有 - 現在情況變得更好了,相同的腳本在任何地方都流暢運行)。

無論如何,無論真正的原因可能是什麼(只有Google工程師可以回答),我使用的解決方案是將日曆調用放入try-catch循環中,嘗試連接幾次,然後我沒有錯誤通知了。

在另一個腳本,我並沒有改變,我不斷收到從時間錯誤的時間,但因爲它不涉及關鍵信息,我真的不介意......注意,我剛纔檢查,現在和我5天內沒有收到任何通知! (必須是日曆的好季節;-)

+0

我不希望客戶端計算機的互聯網連接很重要,因爲代碼正在雲中的某個Google主機上運行。我已經在上面引用的行中添加了try-catch塊,以便我更優雅地失敗一些。 (我已經有主事件在try塊中添加代碼)。 –

+0

我同意它不應該有任何效果,但這是我的感覺......當然,這個速度問題只有當我手動運行腳本而不是定時器觸發時纔會引起注意。 –

+0

也許這可能是有趣的寫一個try/catch結果日誌某處得到一些統計數據... –