Google Calendar Script: Remove Recurrence
I'm iterating through a spreadsheet of events and modifying my calendar accordingly. I can use setRecurrence to create multi-day events, but I can't figure out how to remove the c
Solution 1:
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';
varevent = 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);
}
EDIT
following your comment,
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.
Example :
[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 calendarAppvar advancedID = event.getId().substring(0,event.getId().indexOf('@'));
Logger.log(advancedID);// this ID is for advanced service
}
Working example :
First create an event with a 5 days recurrence using calendarApp (so we are in your real condition) using createEventRec()
Check on the calendar that the event is as expected
Then use changeEvent()
and check the result
function createEventRec(){
var cal = CalendarApp.getDefaultCalendar();
var recurrence = CalendarApp.newRecurrence().addDailyRule().times(5);
varevent = 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);
varevent = 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);
}
Solution 2:
ev.removeAllReminders();
ev.deleteEvent();
Solution 3:
This could would help you to delete events recursively from Jan 1st through 10th Jan.
functiondelete_rec_events()
{
//take care: Date function starts at 0 for the month (January=0)var fromDate = newDate(2018,0,1,0,0,0); //This is January 1, 2018var toDate = newDate(2018,0,10,0,0,0); //This is January 10, 2018 at 00h00'00"var calendarName = '<Name of the Calendar>';
var calendar = CalendarApp.getCalendarsByName(calendarName)[0];
var events = calendar.getEvents(fromDate, toDate);
for(var i=0; i<events.length;i++)
{
var ev = events[i];
Logger.log('Checking Event Title === ' + calendar.getEventSeriesById(ev.getId()).getTitle());
calendar.getEventSeriesById(ev.getId()).deleteEventSeries();
Logger.log('Event Deleted');
}
}
Post a Comment for "Google Calendar Script: Remove Recurrence"