When I create an event and then access it via Google Script, I notice that the endTime overruns the actual day I set the event for. This can be very problematic when iterating over days in the calendar to get events.
Example:
Go into a Google Calendar and set an all day event with the standard defaults for todays date. Then execute the following code:
function foo() {
var cal = CalendarApp.getDefaultCalendar();
var date = new Date();
var events = cal.getEventsForDay(date);
Logger.log("Events for today: "+date);
for (var i=0; i<events.length;i++) {
Logger.log(events[i].getTitle());
Logger.log(" "+events[i].getStartTime());
Logger.log(" "+events[i].getEndTime());
}
date.setDate(date.getDate()+1);
Logger.log("\nEvents for tomorrow: "+date);
events = cal.getEventsForDay(date);
for (var i=0; i<events.length;i++) {
Logger.log(events[i].getTitle());
Logger.log(" "+events[i].getStartTime());
Logger.log(" "+events[i].getEndTime());
}
}
Example output (from Google Script log):
Events for today: Wed Jul 04 2012 19:39:12 GMT+0200 (CEST)
Test
Wed Jul 04 2012 02:00:00 GMT+0200 (CEST)
Thu Jul 05 2012 02:00:00 GMT+0200 (CEST)
Events for tomorrow: Thu Jul 05 2012 19:39:12 GMT+0200 (CEST)
Test
Wed Jul 04 2012 02:00:00 GMT+0200 (CEST)
Thu Jul 05 2012 02:00:00 GMT+0200 (CEST)
OK
I’ve now revisited this issue 3 different times looking for solutions. The ONLY reasonable solution i can find is to create a new calendar at GMT+0. Then all “all day” events will align properly within a single day.