Google Apps脚本getEventsForDay()会返回无效的重复活动

时间:2012-08-08 17:53:00

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

在尝试从Google日历中提取日期议程作为使用Google Apps脚本管理的工作流程的一部分时,我从CalendarApp服务中调用getEventsForDay()

特定(简化)示例:

var calendarView = CalendarApp.getCalendarById(ScriptProperties.getProperty("calendarID"));
var today = new Date();
var todaysEvents = calendarView.getEventsForDay(today);

这会填充数组todaysEvents,使所有日期事件都正常,但也包括重复发生在查询中的日期之前和之后的重复事件,但不会在当天发生。 (查询周三,周一,周二,周五的重复活动将被退回)

我们将日历运行到GMT / BST,因此我查看这是否是Date()将日期返回为PDT而非UTC的函数,但有时会返回任意方向超过24小时的事件。

假设这不是一个错误,我无法找到从返回的数组中过滤掉这些“无效”事件的好方法。你能吗?

或者这是一个错误吗?

由于

1 个答案:

答案 0 :(得分:3)

乔纳森,

我们正在搞清楚。在内部,全天活动以UTC表示,因此根据您所在的时区,这会在前一天或第二天流失。有人在一周前向我询问了一个问题,我提出了我们解决了以下问题:

var startOfDay = new Date();
startOfDay.setUTCHours(0);
startOfDay.setMinutes(0);
startOfDay.setSeconds(0);
startOfDay.setMilliseconds(0);  
var endOfDay = new Date(startOfDay.getTime() + 24 * 60 * 60 * 1000);

var events = CalendarApp.getDefaultCalendar().getEvents(startOfDay, endOfDay)

我意识到这不是现在最好的体验,但它应该做你需要的。您可以将其抽象为函数。