2012-08-08 106 views
1

在尝试从Google日历中提取日程安排作为使用Google Apps脚本管理的工作流程过程的一部分时,我从CalendarApp服务调用getEventsForDay()Google Apps脚本getEventsForDay()返回无效的周期性事件

具体(简化的)例子:

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

此填充阵列todaysEvents与所有的天事件细,而且前和后在复发跨越日期在查询,但确实包括周期性活动当天不会发生。 (查询星期一,星期一,星期二,星期五的周期性事件将返回)

我们运行我们的日历到GMT/BST,所以我查看了这是否是Date()函数返回日期为PDT而不是UTC,但是在两个方向都会返回超过24小时的事件。

假设这不是一个错误,我不能找出从返回的数组中滤除这些'无效'事件的好方法。你可以吗?

或者这是一个错误?

感谢

回答

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) 

我知道,这不是最好的经验,但它应该做你所需要的。你可以把这个抽象成一个函数。

+0

这对我们来说很好 - 我会留意任何仍然存在误报的地方。 – Jonathon 2012-08-10 13:25:35