我在一周内搜索所有活动。
//from = Mon Jul 06 00:02:00 GMT+01:00 2015
//until = Fri Jul 10 00:00:00 GMT+01:00 2015
var events = calendar.getEvents(from,until);
这回事给我这个事件,不是在那个时间范围内,我有什么遗漏吗?
Event 1:
Start time: Sat Jul 04 2015 00:00:00 GMT+0100 (BST)
End Time: Mon Jul 06 2015 00:00:00 GMT+0100 (BST)
它只查找日期而非日期时间内的事件吗?根据此处的文档:https://developers.google.com/apps-script/reference/calendar/calendar#geteventsstarttime-endtime
如果事件在时间范围内开始,在时间范围内结束或包含时间范围,则将返回事件。如果未指定时区,则在脚本的时区上下文中解释时间值,该时区可能与日历的时区不同。
此外,在文档中提供的示例中,它正在寻找2小时时间范围内的事件。
注意,日历和脚本都在同一时区。
谢谢!
-------编辑-------
为了生成日期,我从一个字段中获取一个值,然后从那里生成它:
var day = aux_s.getRange(4,4);
var month = aux_s.getRange(5,4);
var year = aux_s.getRange(6,4);
var initialdate = new Date(year.getValue(), month.getValue()-1, day.getValue(), 0, 0, 0, 0)
var until = new Date(initialdate);
var from = new Date(initialdate.getTime() + (2 * 60 * 1000));
until.setDate(until.getDate()+4);
我记录它时显示的值是:
//from = Mon Jul 06 00:02:00 GMT+01:00 2015
//until = Fri Jul 10 00:00:00 GMT+01:00 2015
然而,它仍然会选择最终于06:00 00:00 GMT + 01:00结束的活动。
答案 0 :(得分:0)
注意:如果您觉得这应该是评论,我很抱歉,但我觉得分享我的代码和输出将是一个更好理解的格式,并且会增加我想要展示的价值。
我不知道你是如何设定日期和时间的,但我刚试过这个:
function getCalEvents()
{
var cal = CalendarApp.getCalendarById('******@gmail.com');
var from = new Date('July 6, 2015 06:00:00 AM PST');
var until = new Date('July 9, 2015 06:00:00 PM PST');
var events = cal.getEvents(from, until);
Logger.log(events.length);
Logger.log(from);
Logger.log(until);
for (var i=0; i<events.length; i++)
{
Logger.log(events[i]);
}
}
我从上面的代码收到的日志输出是:
[15-07-09 18:47:34:162 PDT] 3.0
[15-07-09 18:47:34:163 PDT] Mon Jul 06 07:00:00 GMT-07:00 2015
[15-07-09 18:47:34:164 PDT] Thu Jul 09 19:00:00 GMT-07:00 2015
[15-07-09 18:47:34:166 PDT] CalendarEvent
[15-07-09 18:47:34:167 PDT] CalendarEvent
[15-07-09 18:47:34:167 PDT] CalendarEvent
我建议您使用Logger
检查脚本接受的日期和时间。我已经测试了多个场景,App脚本正在返回所需的结果。
修改强> 在Mogsdad指出这一点之前,我从未注意到PST-PDT的区别。因此,正如他所建议的那样,只留下一个时区不匹配的可能性作为这个问题的可能解释。