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