2012-11-29 68 views
1

我有一個小型Google Apps腳本,用於處理電子表格中的日期列,並在日曆(生日)中生成條目。添加提醒時出現「CalendarApp:Mismatch:etags」 - Google Apps腳本

做工很精細,但添加提醒到(最近創建的)CalendarEvent時,拋出一個錯誤:

Service error: CalendarApp: Mismatch: etags = ["GUQKRgBAfip7JGA6WhJb"], version = [63489901413]

我試圖創建事件後,用於1秒的睡眠(等待變化在日曆中完成),但沒有運氣在這...

順便說一句,事件成功創建,只有提醒不能被添加。

PD:日曆是我自己的日曆,但不是我的主日曆。

下面是部分代碼:

try 
    {     
    birthday = new Date(Data[i][BirthColumn]);   
    birthday.setFullYear(today.getFullYear());         
    birthday.setUTCHours(12); 

    birthlist += Data[i][NameColumn] + " --> " + birthday + "\n"; 

    calendarevent = cal.createAllDayEventSeries("¡Cumpleaños " + Data[i][NameColumn] + "!", birthday, CalendarApp.newRecurrence().addYearlyRule().times(YearsInAdvance)); 

    if (calendarevent == null)   
     success = false; 
    else 
    { 
     //This sentence fails every single time. 
     calendarevent.addEmailReminder(0); 
     calendarevent.addPopupReminder(0); 
     calendarevent.addSmsReminder(0); 
    }  
    } 
    catch (ee) 
    {   
    var row = i + 1; 
    success = false; 

    errlist += "Error on row " + row + ": check name and birth date. Exception Error: " + ee.message + "\n";     
    } 

回答

1

這是一個工作的解決方法一known issue 見註釋NR 67:關鍵是要重新調用事件爲要添加的每一項(提醒,彈出...)使用cal.getEventSeriesById(eventID)後,你只需要.getId() 我得到了我在一些腳本中使用它,它解決了我的問題。

+0

感謝嗶嘰,是解決我的問題。我之前已經閱讀過這個問題,但是它在2010年首次發佈,我認爲這是一個解決的問題......非常感謝您。 – Fabian

+0

這確實是一個'老'...不知道爲什麼它很難解決; - /快樂地,解決方法是好的,雖然有點慢。 –

2

這是代碼,我終於改變,使其工作的一部分,因爲塞爾INSAS之前給我建議:

if (calendarevent == null)   
     success = false; 
    else 
    { 
     cal.getEventSeriesById(calendarevent.getId()).addEmailReminder(0);   
     cal.getEventSeriesById(calendarevent.getId()).addPopupReminder(0); 
     cal.getEventSeriesById(calendarevent.getId()).addSmsReminder(0); 
    } 
+0

感謝您提供代碼示例,我也應該考慮這一點;-) –