添加提醒时,“CalendarApp:Mismatch:etags” - Google Apps脚本

时间:2012-11-29 19:51:29

标签: google-apps-script etag

我有一个小型Google Apps脚本,用于处理电子表格中的日期列,并在日历(生日)中生成条目。

工作正常,但在向(最近创建的)CalendarEvent添加提醒时,会引发错误:

  

服务错误:CalendarApp:不匹配:etags = [“GUQKRgBAfip7JGA6WhJb”],版本= [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";                
  }  

2 个答案:

答案 0 :(得分:2)

这是代码中我最终改变的部分,正如Serge 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);
    }   

答案 1 :(得分:1)

这是known issue 请参阅注释nr 67以获取有效的解决方法:诀窍是在使用cal.getEventSeriesById(eventID)获取ID后,使用.getId()为要添加的每个项目(提醒,弹出...)重新调用事件} 我在一些脚本中使用它,它解决了我的问题。