javascript – Google日历脚本:删除重复发生

我正在迭代事件的电子表格并相应地修改我的日历.

我可以使用setRecurrence来创建多日事件,但我无法弄清楚如何删除该类并将其转换回一天的事件.

重要的是要知道,因为显然不止一次地将setRecurrence应用于事件不会替换/重新定义现有的重复,而是继续在其上添加其他类.这可以防止简单的解决方法,例如应用0天的重复等.

我正在寻找相当于event.removeRecurrence()的东西.

最佳答案 此代码使用高级日历服务,您必须在脚本编辑器菜单中启用它:ressources / advanced Google Services ***

function ChangeEvent(){
  var calendarId = 'primary';
  var eventId = 'omv6###########e8jbs';
  var event = Calendar.Events.get(calendarId, eventId);
  Logger.log('old recurrence = '+event.recurrence);
  event.recurrence = '';
  Calendar.Events.patch(event,calendarId,eventId);
  Logger.log('new recurrence = '+event.recurrence);
}

《javascript – Google日历脚本:删除重复发生》

编辑

在你的评论之后

请注意,高级日历API使用的ID略有不同,因为它不包含@ google.com.您应该在使用前删除最后一部分.

示例:

[16-02-19 07:22:59:739 CET] ba4a1dub73uqsvhld3abh15f38@google.com
[16-02-19 07:22:59:740 CET] ba4a1dub73uqsvhld3abh15f38

使用一些字符串方法来获得我们需要的结果:

  Logger.log(event.getId());// event is the event you get using calendarApp
  var advancedID = event.getId().substring(0,event.getId().indexOf('@'));
  Logger.log(advancedID);// this ID is for advanced service
}

工作范例:

首先使用createApp创建一个具有5天重复发生的事件(因此我们处于您的实际状态)使用createEventRec()

检查日历事件是否符合预期

然后使用changeEvent()并检查结果

function createEventRec(){
  var cal = CalendarApp.getDefaultCalendar();
  var recurrence = CalendarApp.newRecurrence().addDailyRule().times(5);
  var event = cal.createEventSeries('Dinner with Mary', new Date(),new Date(new Date().getTime()+3600000), recurrence);
  Logger.log(event.getId());
  PropertiesService.getScriptProperties().setProperty('ID',event.getId());
}


function ChangeEventRecurrence(){
  var calendarId = 'primary';
  var ID = PropertiesService.getScriptProperties().getProperty('ID');
  var advancedID = ID.substring(0,ID.indexOf('@'));
  Logger.log(advancedID);
  var event = Calendar.Events.get(calendarId, advancedID);
  Logger.log('old recurrence = '+event.recurrence);
  event.recurrence = '';
  Calendar.Events.patch(event,calendarId,advancedID);
  Logger.log('new recurrence = '+event.recurrence);
}
点赞