【问题标题】:Google Calendar API - recurring event with max time limitGoogle Calendar API - 具有最大时间限制的重复事件
【发布时间】:2015-06-02 15:02:33
【问题描述】:

我想获取重复事件所有事件

因此,我将选项 singleEvents 设置为 true。 现在,当我列出所有事件时,响应会返回 endless items(通过使用 nextPageToken)。当然,我可以设置 MaxTime 来设置最大时间限制。

但是,我需要 syncToken 才能仅获取更新的事件。否则我的服务器有很多同步任务。 :(

当发生变化时,服务器会收到推送通知。当我创建重复事件时,服务器收到推送通知并尝试通过最后一个 syncToken 获取更新的事件(使用 list events)。

如何设置最大时间限制,这样我就可以在没有无穷无尽的 nextPages 的情况下获得 nextSyncToken。

我当前的通话: 获取https://www.googleapis.com/calendar/v3/calendars/[CALENDAR]/events?singleEvents=true&syncToken=[SYNC-TOKEN]

【问题讨论】:

  • 您可以在初始请求中设置时间边界,获取整个范围,然后开始使用同步令牌获取更新。这里有一个带有代码示例的指南:developers.google.com/google-apps/calendar/v3/sync
  • 在同步期间创建新的无限循环事件时,这不起作用,因为当 singleEvents 为 true 时,我会得到无限项。
  • 它不是无止境的,只是有点冗长。你可以分页并实际到达结尾;)
  • 你知道,我得到了多少物品?我必须使用实例方法来获取结束后的事件吗?我目前的解决方案是检索一个时间间隔内的所有事件(包括已删除的事件)。所以我们的数据库在这个时间间隔内是最新的。

标签: google-calendar-api google-api-client


【解决方案1】:

当您使用同步令牌时,GCal gives you all the updated events 并且限制每个响应中事件数量的唯一方法是 use a pager。设置maxResults 以限制每页获得的结果数量(最多2500 个),然后使用pageToken 直到获得另一个nextSyncToken,这意味着您在最后一页并且没有更多要同步的事件。每个请求都有一个nextSyncTokennextPageToken,但不能同时拥有。

GCal 为重复事件创建 730 个事件,没有某种限制,因此每天的事件价值为 2 年,或者对于“每个月的第一个星期五”类型的事件,价值不到 61 年。您可以使用built in API 进行检查,并将结果复制到您可以搜索并计算其中一个键的实例的位置。默认情况下,每页 250 个结果,第三页返回 230 个。

这不仅仅是通过 events list 和 singleEvents true 传递的数量。您会在您的 GCal 日历中看到该事件在此时间之后停止,如果您明天再查看,则不会再创建另一个每日事件。

当然,自上次同步以来可能会有很多长事件,但由于您使用的是推送通知,这应该不会影响您。

【讨论】:

    【解决方案2】:

    最近我一直在处理类似的情况并想出了这个解决方案:

    -将 singleEvents 设置为 false

    -对于重复事件,使用 timeMin 和 timeMax 单独检索实例

    现在您仍然可以使用syncTokens 和API 的instances() 部分,让您通过查询将重复事件分解为单个事件。如果您再次接近 timeMax,您只需确保进行完全同步。

    来源:https://developers.google.com/google-apps/calendar/v3/reference/events/instances

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多