【问题标题】:Delete events before deleting calendar - not able to get events在删除日历之前删除事件 - 无法获取事件
【发布时间】:2021-06-26 07:42:23
【问题描述】:

我仍在学习 Apps 脚本。这是sample google sheet 和用于从 Google 工作表的自定义菜单创建日历事件的代码。我想在菜单选项中添加删除事件和日历功能。

但我无法通过 to 和 from 日期获取事件列表。我得到了this link的帮助

function delete_events()
{
  //Please note: Months are represented from 0-11 (January=0, February=1). Ensure dates are correct below before running the script.
  var fromDate = new Date(); //This represents June 1st 2020
  var toDate = new Date(); //This represents June 30th 2020
  toDate.setHours(toDate.getHours()+24);
  var calendarID = 'c_9ngacs4sflij848armjj9i91dk@group.calendar.google.com'; //Enter your calendar ID here

  var calendar = CalendarApp.getCalendarById(calendarID);
   Logger.log('calendar: '+calendar.getName());
  //Search for events between fromdate and todate with given search criteria
  var events = calendar.getEvents(fromDate, toDate);
  Logger.log('Event: '+events.length);
  // events.forEach(function(e,i){Logger.log(e[i])});
  for(var i=0; i<events.length;i++) //loop through all events
  {
    var ev = events[i];
    Logger.log('Event: '+ev.getTitle()+' found on '+ev.getStartTime()); // Log event name and title
      ev.deleteEvent(); // delete event
  }
}

我的 appscript.json 文件添加了以下范围 -

"oauthScopes": [
  "https://www.googleapis.com/auth/calendar",
  "https://www.googleapis.com/auth/script.external_request",
  "https://www.googleapis.com/auth/spreadsheets.currentonly",
  "https://www.googleapis.com/auth/spreadsheets"
],

但是当我运行上面的代码时,我得到了关注 -

然后我看到了实际的日历,里面有很多活动。

为什么我的功能不能正常工作? 事件 id,CalId 是好的。那么空事件的原因是什么?

【问题讨论】:

  • 我不是日历专家,所以只是猜测。看起来问题出在getTitle() 函数developers.google.com/apps-script/reference/calendar/… 可能,我不确定,您需要将https://www.google.com/calendar/feeds 添加到您的json 中
  • 实际上我认为问题在于 setHours() 只是设置了该日期的小时。所以你的 fromDate 和 toDate 是相同的,因此没有事件。尝试增加一天。 toDate=new Date(newDate().getFullYear(),new Date().getMonth(),new Date().getDate() + 1);
  • @Cooper, setHours() 适合我。你可以自己试试。这是另一个与setDate()类似的例子:stackoverflow.com/questions/68088181/…他可以使用toDate.setDate(toDate.getDate()+1);都一样
  • 我想问题不在于添加日期或时间。我已经尝试了所有这些。我需要尝试一些其他技巧。
  • @yuri-khristich 感谢您的链接。这是一个不错的。

标签: api google-apps-script calendar


【解决方案1】:

我能够使用以下帖子的代码来解决。 这是[链接] [1]。 解决我的删除事件功能的代码部分如下 -

try {
  var event = cal.getEventSeriesById(id);
  event.deleteEventSeries();
  row[9] = '';  // Remove event ID    
}
catch (e) {
  // do nothing - we just want to avoid the exception when event doesn't exist
}

感谢大家的投入。 [1]:Google Script: How can I Create/Update/Delete Calendar Event and prevent duplicate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多