Google Calendar API - 具有最长时限

时间:2015-06-02 15:02:34

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

我想获得重复活动所有活动

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

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

当更改内容时,服务器会获取推送通知。当我创建定期事件时,服务器收到推送通知并尝试通过上一次syncToken获取更新的事件(使用列表事件)。

如何设置最大时间限制,这样我就可以获得nextSyncToken,而无需使用无尽的nextPages。

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

2 个答案:

答案 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,这意味着您位于最后一页,没有更多内容了要同步的事件。每个请求都有一个nextSyncTokennextPageToken,但没有两个。

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

这不仅仅是事件列表和单事件true传递的数量。您会在GCal日历中看到该事件在此时间之后停止,如果您明天再回来查看,则不会再创建任何日常事件。

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