【发布时间】:2016-10-07 13:02:19
【问题描述】:
Events: list 并未返回所有事件。
我在日历上看到了很多事件,但是当我拨打Events: list 时,我只收到其中一些。
这不是 maxResults 太低的问题。我将其设置为最大返回 2500。我得到了 1251 左右,我通过 API 删除了大约 24 个,现在它返回 1227。但是日历上有一堆没有回来。
这也不是页面令牌的问题。我正在循环查看其余部分是否在下一页 pageToken 列表中,但是当我在第一页之后调用 getNextPageToken 时,它为空。
我使用的可选参数是:
$optParams = array(
'maxResults' => 2500,
'singleEvents' => TRUE,
'pageToken' => $pageToken,
);
如果我将 singleEvents 设置为 false 或将其删除,Google 会以错误响应。
singleEvents boolean 是否将重复事件展开为实例 并且只返回单个一次性事件和重复的实例 事件,但不是潜在的重复事件本身。选修的。 默认为 False。
这似乎是在 Google 将 GMail 名称更改为 G suites 时开始发生的。
我的代码如下:(当我 var_dump $calendarList 时,我只得到一个日历。我使用类似的代码首先添加日历事件。)
$calendarList = $service->calendarList->listCalendarList();
$calendarListEntry = $service->calendarList->get('primary');
$continue = 1;
echo "reading the calendar for duplicate appointments<br>";
while ($continue == 1) {
$optParams = array(
'maxResults' => 2500,
'singleEvents' => TRUE,
'pageToken' => $pageToken,
);
$events = $service->events->listEvents($calendarListEntry->id, $optParams);
foreach ($events->getItems() as $event) {
//process events
}
$pageToken = $events->getNextPageToken();
if ($pageToken == null) { continue = 0; }
}
编辑:奇怪的是,当我将 maxResults 降低到 250 时,我得到了一些最初没有出现在结果中的结果。但我仍然没有得到所有这些。
Edit2:忘记包含读取下一页令牌的调用。
编辑 3:奇怪的是,虽然我传入了 'singleEvents' => TRUE,但我也收到了标记为重复的事件。
【问题讨论】:
-
你在 $pageToken 中输入了什么,为什么?为什么不直接做 $events = $service->events->listEvents($calendarListEntry->id) ?
-
因为如果我只做 listEvents,它只会返回前 250 个。我最初将 null 作为 pagetoken,在随后的调用中,我使用从 $pageToken 返回的值= $events->getNextPageToken();我只是忘了将它添加到上面的代码中。
-
好的,我猜你不想分页。如果你删除单事件和页面令牌行会发生什么?
-
我正在分页。您没有阅读我的评论或看到我的编辑吗?