Google日历脚本:删除重复发生 [英] Google Calendar script: remove recurrence

本文介绍了Google日历脚本:删除重复发生的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm iterating through a spreadsheet of events and modifying my calendar accordingly.

我可以使用 setRecurrence 来创建多日活动,但我无法弄清楚如何删除上课并将其变回为期一天的活动。

I can use setRecurrence to create multi-day events, but I can't figure out how to remove the class and turn it back into a single-day event.

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

It's important to know because evidently applying setRecurrence to an event more than once does not replace/redefine the existing recurrence, but keeps tacking additional classes onto it. This prevents simple workarounds, such as applying a recurrence of 0 days, etc.

我正在寻找等价的 event.removeRecurrence()

推荐答案

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

This code uses advanced Calendar service, you have to enable it in the script editor menu : 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);
}







关注您的评论

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

Please note that the ID used by the advanced calendar API is slightly different as it does not include the @google.com. You should simply remove this last part before using it.

示例:

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

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

Use some string methods to get the result we need :

  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
}






工作示例:



首先使用calendarApp创建一个重复5天的事件(因此我们在您的真实中条件)使用 createEventRec()

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

Check on the calendar that the event is as expected

然后使用 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);
}

这篇关于Google日历脚本:删除重复发生的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆