Google Calendar API - 具有最大时间限制的重复事件

问题描述 投票:0回答:2

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

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

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

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

如何设置最大时间限制,这样我就可以获取 nextSyncToken 而不会出现无穷无尽的 nextPages。

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

google-calendar-api google-api-client
2个回答
3
投票

当您使用同步令牌时,GCal 会为您提供所有更新的事件,限制每个响应中事件数量的唯一方法是使用寻呼机。设置

maxResults
以限制每页获得的结果数量(最多 2500 个),然后使用
pageToken
直到获得另一个
nextSyncToken
,这意味着您位于最后一页,并且没有更多事件需要同步。每个请求都会有
nextSyncToken
nextPageToken
,但不会同时出现。

GCal 创建 730 个事件(请参阅提示) 用于重复事件,没有某种限制,因此每天的事件相当于 2 年的事件,或者“每月第一个星期五”类型的事件相当于 61 年。您可以使用内置 API 检查这一点,并将结果复制到可以搜索和计算其中一个键的实例的位置。默认情况下,每页 250 个结果,第 3 页返回 230 个。

这不仅仅是事件列表和 singleEvents true 传递的数量。您将在 GCal 日历中看到活动在此时间后停止,如果您明天再回来查看,则不会再创建其他每日活动。

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


1
投票

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

-将 singleEvents 设置为 false

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.