0

当我创建一个事件然后通过 Google 脚本访问它时,我注意到 endTime 超出了我设置事件的实际日期。当在日历中迭代几天以获取事件时,这可能会非常有问题。

示例:进入 Google 日历并使用今天日期的标准默认值设置全天事件。然后执行以下代码:

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());
  }
}

示例输出(来自 Google 脚本日志):

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
4

3 回答 3

1

我认为这是一个错误。您应该订阅问题跟踪器中提出的许多问题

  1. 第 234 期
  2. 第 936 期
于 2012-07-06T11:27:14.100 回答
1

我现在已经 3 次重新审视这个问题,寻找解决方案。我能找到的唯一合理的解决方案是在 GMT+0 创建一个新日历。然后所有“全天”事件将在一天内正确对齐。

于 2012-11-26T03:29:32.910 回答
0

我得到了同样的错误。我的全天活动将在美国东部标准时间前一天晚上 7 点开始。我的临时任务是检查全天活动是否从今天开始。代码片段:

var allDayP = event.isAllDayEvent();
if (allDayP)
{
  titl = '<font color="red">' + event.getTitle() + '</font>';  
  if (Utilities.formatDate(event.getStartTime(), Session.getTimeZone(),"M/d") == Utilities.formatDate(now, Session.getTimeZone(),"M/d"))
  {
  startTime = "All Day Event The Next Day";
  endTime = Utilities.formatDate(event.getEndTime(), Session.getTimeZone(),"M/d")
  }
  else
  {
  startTime = "All Day Event Today";
  endTime = Utilities.formatDate(event.getEndTime(), Session.getTimeZone(),"M/d")
  }
}    
于 2013-02-22T07:49:33.003 回答