2012-11-29 3 views
1

스프레드 시트의 날짜 열을 처리하고 캘린더 (생일)에 항목을 생성하는 Google Apps 스크립트가 있습니다.미리 알림 추가시 "CalendarApp : Mismatch : etags"- Google Apps Script

일은 잘하지만 (최근에 만든) CalendarEvent에 미리 알림을 추가 할 때 오류가 발생합니다 :

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

나는 이벤트를 생성 한 후 일초 잠을 수행하려고했습니다 (변경 대기 캘린더에서 행해지지만)이 행운은 없습니다 ...

둘째, 이벤트는 성공적으로 생성되며 미리 알림 만 추가 할 수 없습니다.

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 : 여기

코드의 일부 트릭은 추가 할 모든 항목 (알림에 대한 이벤트를 다시 호출하는 것입니다 , popup ...) 을 사용하여 간단하게 ID를 얻은 후 .getId() 일부 스크립트에서이 문제를 사용하고 나에게이 문제를 해결했습니다. 내 문제를 해결하는,

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

감사 서지 : 서지 INSAS 전에 나에게 제안으로 – Fabian

+0

실제로 '오래된 것'입니다 ... 왜 그렇게 어려운지 모르겠어요 -/행복하게, 조금 느리지 만 해결 방법은 괜찮습니다. –

2

, 나는 마지막으로 작동하도록 변경 코드의 부분이다. 이전에이 문제를 읽었지만 2010 년에 처음 게시되었습니다. 문제가 해결되었다고 생각했습니다 ... 다시 한 번 감사드립니다.
+0

코드 예제를 제공해 주셔서 감사합니다. –