Google日历脚本:删除重复

时间:2016-02-18 09:33:57

标签: javascript google-apps-script google-calendar-api google-calendar-recurring-events

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

我可以使用setRecurrence创建多日活动,但我无法弄清楚如何删除该类并将其转回单日活动。

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

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

3 个答案:

答案 0 :(得分:2)

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

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

enter image description here

修改

关注您的评论,

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

示例:

  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
}

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

createEventRec()

工作示例:

首先使用changeEvent()

使用calendarApp创建一个重复5天的事件(因此我们处于您的实际状态)

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

然后使用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); } 并检查结果

{{1}}

答案 1 :(得分:0)

ev.removeAllReminders();
ev.deleteEvent();

答案 2 :(得分:0)

这可以帮助您从1月1日到1月10日递归删除事件。

df.withcolumn("code",substring("code",0,1))