【问题标题】:Google Apps Script getEventsForDay() returns invalid recurring eventsGoogle Apps 脚本 getEventsForDay() 返回无效的重复事件
【发布时间】:2012-08-08 17:53:00
【问题描述】:

在尝试从 Google 日历中提取日程表作为使用 Google Apps 脚本管理的工作流程的一部分时,我从 CalendarApp 服务中调用了getEventsForDay()

一个具体的(简化的)示例:

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

这会在数组todaysEvents 中填充所有正常的事件,但还包括重复发生之前和之后的重复事件,其中重复跨越查询中的日期,但不会在当天发生。 (查询周三,周一、周二、周五的重复事件将被返回)

我们将日历运行到 GMT/BST,因此我研究了这是否是 Date() 将日期返回为 PDT 而不是 UTC 的函数,但有时会返回任一方向超过 24 小时的事件。

假设这不是错误,我无法找到从返回的数组中过滤掉这些“无效”事件的好方法。可以吗?

或者这是一个错误?

谢谢

【问题讨论】:

    标签: google-apps-script google-calendar-api google-apps


    【解决方案1】:

    乔纳森,

    我们正在解决这个问题。在内部,全天事件以 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)
    

    我意识到这不是目前最好的体验,但它应该可以满足您的需求。你可以把它抽象成一个函数。

    【讨论】:

    • 现在很好 - 我会留意任何仍然给出误报的情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多