我想获取重复事件的所有事件。
因此,我将选项 singleEvents 设置为 true。 现在,当我列出所有事件时,响应会返回endless items(通过使用 nextPageToken)。当然,我可以设置 MaxTime 来设置最大时间限制。
但是,我需要syncToken 来仅获取更新的事件。否则我的服务器有很多同步任务。 :(
当发生变化时,服务器会收到推送通知。当我创建重复事件时,服务器收到推送通知并尝试通过最后一个同步令牌获取更新的事件(使用list events)。
如何设置最大时间限制,这样我就可以获取 nextSyncToken 而不会出现无穷无尽的 nextPages。
当您使用同步令牌时,GCal 会为您提供所有更新的事件,限制每个响应中事件数量的唯一方法是使用寻呼机。设置
maxResults
以限制每页获得的结果数量(最多 2500 个),然后使用 pageToken
直到获得另一个 nextSyncToken
,这意味着您位于最后一页,并且没有更多事件需要同步。每个请求都会有 nextSyncToken
或 nextPageToken
,但不会同时出现。
GCal 创建 730 个事件(请参阅提示) 用于重复事件,没有某种限制,因此每天的事件相当于 2 年的事件,或者“每月第一个星期五”类型的事件相当于 61 年。您可以使用内置 API 检查这一点,并将结果复制到可以搜索和计算其中一个键的实例的位置。默认情况下,每页 250 个结果,第 3 页返回 230 个。
这不仅仅是事件列表和 singleEvents true 传递的数量。您将在 GCal 日历中看到活动在此时间后停止,如果您明天再回来查看,则不会再创建其他每日活动。
当然,自上次同步以来可能会有许多长事件,但由于您使用的是推送通知,这不会影响您。
最近我一直在处理类似的情况并提出了这个解决方案:
-将 singleEvents 设置为 false
-对于重复事件,使用 timeMin 和 timeMax 单独检索实例
现在您仍然可以使用syncTokens 和API 的instances() 部分,让您可以通过查询将重复事件分解为单个事件。如果再次接近 timeMax,您只需确保进行完全同步即可。
来源:https://developers.google.com/google-apps/calendar/v3/reference/events/instances