我正在使用Google表单根据Google日历上的未结事件安排约会。我已经在日历上划分了时间段,如果事件的标题为“ Open”,则可以使用该时间段创建事件。接下来,我想知道是否可以使用创建的新约会覆盖和删除现有的打开事件。
这是我用来将事件推送到日历中的代码,这些事件以表单的形式创建:
var calendarID = "";
var startDtID = 5;
var endDtID = 5; // Column containing date/time
var nameID = 2; // Column containing name
var emailID = 3; // Column containing email
var phoneID = 4; // Column containing phone
var formTimeStampID = 1; // column containing timestamp
function getLatestAndSubmitToCalendar() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var lr = rows.getLastRow();
var startDt = sheet.getRange(lr,startDtID,1,1).getValue();
var endDt = sheet.getRange(lr,endDtID,1,1).getValue(); // remove hour and minute for the start/end time
var desc = "Comments :"+sheet.getRange(lr,phoneID,1,1).getValue(); // set comments as description, add in timestamp and submission
var title = sheet.getRange(lr,nameID,1,1).getValue()+" - "+sheet.getRange(lr,emailID,1,1).getValue(); // create title using name and email
createEvent(calendarID,title,startDt,endDt,desc);
}; // run create event function
function createEvent(calendarId,title,startDt,endDt,desc) {
var cal = CalendarApp.getCalendarById(calendarID);
var start = new Date(startDt);
var end = new Date(endDt);
var event = cal.createEvent(title, start, end, {
description : desc
}); // set options for event
};
CalendarEvent类具有通过deleteEvent()删除事件的方法,但是对于如何确定要删除的正确事件,我感到困惑。如何将当前事件的日期和时间与已经存在的事件的日期和时间进行匹配,以便可以覆盖它?
最佳答案
您需要先调用calendar.getEvents(),然后循环浏览要删除的事件,然后对每个事件都调用.delete()。这是API链接:https://developers.google.com/apps-script/reference/calendar/calendar#getEvents%28Date,Date,Object%29
像这样:
var now = new Date();
var twoHoursFromNow = new Date(now.getTime() + (2 * 60 * 60 * 1000));
var events = CalendarApp.getDefaultCalendar().getEvents(now, twoHoursFromNow,
{search: 'meeting'});
for(int i = 0; i < events.length; i++){
if this is the right event (compare title, times, etc?){
events[i].deleteEvent();
}
}
在这种情况下,您可能需要比较说明。还要注意,您可以将选项传递给getEvents调用;在搜索过程中可以用来过滤的一个参数是我上面所做的搜索参数。它过滤该文本上返回的事件。
编辑:理想情况下,您将要使用此:https://developers.google.com/apps-script/reference/calendar/calendar#getEventSeriesById%28String%29
通过ID来获取事件;我以假设您没有在任何地方存储ID的方式回答。如果这样做,那就更好了,并且可以肯定,您正在替换正确的事件。