谷歌日历deleteEvent()在谷歌表脚本中不起作用

时间:2020-07-01 20:48:22

标签: google-apps-script google-sheets google-calendar-api

作为工作表文件中较大脚本的一部分,我正尝试删除Google日历上的事件,并使用新的结束时间对其进行重新制作。基本上,我正在处理工作单,在创建工作单时,它会基于创建日期和到期日向日历添加事件。我在此表单上有一个关闭函数,当我运行它时,它会向一个单元格和其他一些东西最终添加一个关闭日期。我想要的是根据创建日期和截止日期删除事件,然后将其替换为基于创建日期和截止日期的事件。或者可能只是将其全部删除,但尚未决定。这样,在到期日之前关闭的工单仍不会占用日历。我有日历,并且已经通过搜索开始日期,结束日期和事件名称找到了该事件。由于某种原因,我得到一个deleteEvent()不是函数错误。我已经使用相同的代码创建了一个事件,所以我不知道它是否与访问/权限有关。

我用来创建初始事件的代码。

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("c_4um01s3eqvq7d5kqi0ga4i1098@group.calendar.google.com") ;

eventCal.createAllDayEvent(eventname, eventstart, eventstop);

尝试删除事件的代码 函数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("c_4um01s3eqvq7d5kqi0ga4i1098@group.calendar.google.com") ;
       var eventname = sheetTemplate.getRange("C4").getValue(); 
       var eventstart = sheetTemplate.getRange("E3").getValue();
       var eventstop = sheetTemplate.getRange("E4").getValue();
       var eventCal = 
CalendarApp.getCalendarById("c_4um01s3eqvq7d5kqi0ga4i1098@group.calendar.google.com") ;
       var events = eventCal.getEvents(eventstart, eventstop,
{search: eventname});
 Logger.log(events + 'event name'+ eventname + 'start time' + eventstart + 'stop time'+ eventstop);
       events.deleteEvent();

我不知道我在做什么错。我登录以确保找到事件,并且看来我在。最后,这将由已安装的onEdit触发器运行,但只是尝试首先使其手动工作。感谢您的帮助,我确定它很简单,但是我只是在学习这些东西。

1 个答案:

答案 0 :(得分:1)

events是一个数组,因此以下操作无效:

events.deleteEvent();

尝试以下操作删除第一个事件:

events[0].deleteEvent();

要删除所有事件,请尝试:

for(var i=0;i<events.length;i++) {
    events[i].deleteEvent();
}

引用:
https://developers.google.com/apps-script/reference/calendar/calendar#geteventsstarttime,-endtime,-options