【问题标题】:Google Script Calendar event end time overrun on all day eventsGoogle Script Calendar 事件结束时间在全天事件中超时
【发布时间】:2012-07-04 17:26:13
【问题描述】:

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

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

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

【问题讨论】:

    标签: calendar google-apps-script


    【解决方案1】:

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

    1. Issue 234
    2. Issue 936

    【讨论】:

    • 是的,第 936 期离我很近。我确实玩弄了我的谷歌帐户的时区设置,看看这是否改变了“错误”的行为,但没有看到太大的变化。但是我不知道日历本身是否有时区设置?奇怪的。我将监视该错误帖子以寻找可能的解决方案。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      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")
        }
      }    
      

      【讨论】:

        猜你喜欢
        • 2011-06-02
        • 2014-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多