Reputation: 25
As part of a larger script in a sheets file I am attempting to delete an event on google calendar and remake it with a new end time. Basically I am working on a work order sheet, that when I create it adds an event to a calendar based on a create date and a due date. I have a close function on this form, that when I run it adds a closed date to a cell and some other things eventually. What I want is to delete the event based on create date and due date, and replace it with an event based on create date and closed date. Or possibly just delete it all together, haven't decided yet. That way work orders closed before the due date aren't still taking up room on the calendar. I have the calendar called, and have found the event by search start date, end date, and event name. For some reason I get a deleteEvent() is not a function error. I am already creating an event from this same code so I don't know if its something to do with access/permission.
Code that i use to create the intial event.
function Schedule() {
var ssTemplate = SpreadsheetApp.getActiveSpreadsheet(); // Get spreadsheet
//var ssTemplate = SpreadsheetApp.openById('1IYSamJpGZbgFyWMTzzFBfLaqV-9Jj3_jd8fW71VSZJA');
//var sheetTemplate = ssTemplate.getSheetByName("Sheet2");
var sheetTemplate = ssTemplate.getActiveSheet();
var eventname = sheetTemplate.getRange("C4").getValue();
var eventstart = sheetTemplate.getRange("E3").getValue();
var eventstop = sheetTemplate.getRange("E4").getValue();
var eventCal =
CalendarApp.getCalendarById("[email protected]") ;
eventCal.createAllDayEvent(eventname, eventstart, eventstop);
Code to try and delete the event function StopSchedule() {
var ssTemplate = SpreadsheetApp.getActiveSpreadsheet(); // Get spreadsheet
//var ssTemplate = SpreadsheetApp.openById('1IYSamJpGZbgFyWMTzzFBfLaqV-9Jj3_jd8fW71VSZJA');
//var sheetTemplate = ssTemplate.getSheetByName("Sheet2");
var sheetTemplate = ssTemplate.getActiveSheet();
var eventCal =
CalendarApp.getCalendarById("[email protected]") ;
var eventname = sheetTemplate.getRange("C4").getValue();
var eventstart = sheetTemplate.getRange("E3").getValue();
var eventstop = sheetTemplate.getRange("E4").getValue();
var eventCal =
CalendarApp.getCalendarById("[email protected]") ;
var events = eventCal.getEvents(eventstart, eventstop,
{search: eventname});
Logger.log(events + 'event name'+ eventname + 'start time' + eventstart + 'stop time'+ eventstop);
events.deleteEvent();
I don't know enough to know what I am doing wrong. I put the log in to make sure I was finding the event and it seems that I am. In the end this will be ran by an installed onEdit trigger but just trying to get it to work manually first. Thanks for any help, I'm sure its simple but I'm just learning this stuff.
Upvotes: 0
Views: 1516
Reputation: 1810
events is an array, so following will not work:
events.deleteEvent();
Try following to delete the first event:
events[0].deleteEvent();
To delete all events, try:
for(var i=0;i<events.length;i++) {
events[i].deleteEvent();
}
Upvotes: 2