Javascript 通过脚本创建新事件时覆盖现有google日历事件

Javascript 通过脚本创建新事件时覆盖现有google日历事件,javascript,google-calendar-api,Javascript,Google Calendar Api,我正在使用谷歌表单根据谷歌日历上的开放事件安排约会。我已经在日历上划分了时间段,如果活动的标题是“开放”,那么时间段可以用来创建活动。接下来,我想知道是否可以使用创建的新约会覆盖和删除现有的开放事件 以下是我用来在窗体中创建事件时将事件推送到日历中的代码: var calendarID = ""; var startDtID = 5; var endDtID = 5; // Column containing date/time var nameID = 2; // Column contain

我正在使用谷歌表单根据谷歌日历上的开放事件安排约会。我已经在日历上划分了时间段,如果活动的标题是“开放”,那么时间段可以用来创建活动。接下来,我想知道是否可以使用创建的新约会覆盖和删除现有的开放事件

以下是我用来在窗体中创建事件时将事件推送到日历中的代码:

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类有一个删除事件的方法,但我不知道如何确定要删除的正确事件。如何将当前事件的日期和时间与已经存在的事件的日期和时间进行匹配,以便覆盖它?

您需要先调用calendar.getEvents(),然后遍历要删除的事件,并对每个事件调用.delete()。以下是API链接:

大概是这样的:

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();
    }
}
var now=newdate();
var twoohoursfromnow=新日期(now.getTime()+(2*60*60*1000));
var events=CalendarApp.getDefaultCalendar().getEvents(现在,两小时之后,
{搜索:'会议'});
for(int i=0;i
在本例中,您可能需要比较这些描述。还请注意,您可以将选项传递给getEvents调用;您可以在搜索过程中使用搜索参数进行筛选,就像我在上面所做的那样。它过滤该文本上返回的事件

编辑:理想情况下,您需要使用以下选项:


通过ID获取事件的;我的回答是假设你没有把身份证存储在任何地方。如果您这样做了,那就更好了,而且您可以确定您正在替换正确的事件。

您需要先调用calendar.getEvents(),然后循环遍历要删除的事件,并对每个事件调用.delete()。以下是API链接:

大概是这样的:

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();
    }
}
var now=newdate();
var twoohoursfromnow=新日期(now.getTime()+(2*60*60*1000));
var events=CalendarApp.getDefaultCalendar().getEvents(现在,两小时之后,
{搜索:'会议'});
for(int i=0;i
在本例中,您可能需要比较这些描述。还请注意,您可以将选项传递给getEvents调用;您可以在搜索过程中使用搜索参数进行筛选,就像我在上面所做的那样。它过滤该文本上返回的事件

编辑:理想情况下,您需要使用以下选项:


通过ID获取事件的;我的回答是假设你没有把身份证存储在任何地方。如果您这样做了,那就更好了,而且您可以确定您正在替换正确的事件。

您需要先调用calendar.getEvents(),然后循环遍历要删除的事件,并对每个事件调用.delete()。以下是API链接:

大概是这样的:

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();
    }
}
var now=newdate();
var twoohoursfromnow=新日期(now.getTime()+(2*60*60*1000));
var events=CalendarApp.getDefaultCalendar().getEvents(现在,两小时之后,
{搜索:'会议'});
for(int i=0;i
在本例中,您可能需要比较这些描述。还请注意,您可以将选项传递给getEvents调用;您可以在搜索过程中使用搜索参数进行筛选,就像我在上面所做的那样。它过滤该文本上返回的事件

编辑:理想情况下,您需要使用以下选项:


通过ID获取事件的;我的回答是假设你没有把身份证存储在任何地方。如果您这样做了,那就更好了,而且您可以确定您正在替换正确的事件。

您需要先调用calendar.getEvents(),然后循环遍历要删除的事件,并对每个事件调用.delete()。以下是API链接:

大概是这样的:

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();
    }
}
var now=newdate();
var twoohoursfromnow=新日期(now.getTime()+(2*60*60*1000));
var events=CalendarApp.getDefaultCalendar().getEvents(现在,两小时之后,
{搜索:'会议'});
for(int i=0;i
在本例中,您可能需要比较这些描述。还请注意,您可以将选项传递给getEvents调用;您可以在搜索过程中使用搜索参数进行筛选,就像我在上面所做的那样。它过滤该文本上返回的事件

编辑:理想情况下,您需要使用以下选项:


通过ID获取事件的;我的回答是假设你没有把身份证存储在任何地方。如果您这样做了,那就更好了,您将确信您正在替换正确的事件。

它起作用了!下面是我完整的代码,用于添加事件和删除同时发生的事件

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
  });

    var events = cal.getEvents(start, end, {
    search: 'open'
  });  

  for (i in events){
    events[i].deleteEvent();
  }
};

它起作用了!下面是我完整的代码,用于添加事件和删除同时发生的事件

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
  });

    var events = cal.getEvents(start, end, {
    search: 'open'
  });  

  for (i in events){
    events[i].deleteEvent();
  }
};

它起作用了!下面是我完整的代码,用于添加事件和删除同时发生的事件

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
  });

    var events = cal.getEvents(start, end, {
    search: 'open'
  });  

  for (i in events){
    events[i].deleteEvent();
  }
};

它起作用了!下面是我完整的代码,用于添加事件和删除同时发生的事件

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
  });

    var events = cal.getEvents(start, end, {
    search: 'open'
  });  

  for (i in events){
    events[i].deleteEvent();
  }
};

非常感谢。这很有帮助,但现在我在使用deleteEvent时遇到了问题。我已经按照您的建议调用了getEvents,我想删除它找到的任何内容(返回一个正确的事件)。这就是我一直在尝试的:CalendarEvent.deleteEvent(事件);怎么称呼这个?谢谢!这很有帮助,但现在我在使用deleteEvent时遇到了问题。我已经按照您的建议调用了getEvents,我想删除它找到的任何内容(返回一个正确的事件)。这就是我一直在尝试的:CalendarEvent.deleteEvent(ev