在尝试从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小时的事件。
假设这不是一个错误,我无法找到从返回的数组中过滤掉这些“无效”事件的好方法。你能吗?
或者这是一个错误吗?
由于
答案 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)
我意识到这不是现在最好的体验,但它应该做你需要的。您可以将其抽象为函数。