事件列表没有返回所有的事件。
我在日历上看到很多事件,但是当我调用events: list时,我只得到其中的一些。
这不是maxResults值太低的问题。我把它设置为最大值2500。我得到1251左右,我通过API删除了大约24,现在它返回1227。然而,日历上有一堆人不会回来了。
这也不是页令牌的问题。我正在循环,看看是否不知何故其余的是下一个pageToken列表,但当我调用getNextPageToken后的第一页,它是空的。
我使用的可选参数是:
$optParams = array(
'maxResults' => 2500,
'singleEvents' => TRUE,
'pageToken' => $pageToken,
);
如果我将singleEvents设置为false,或者删除它,Google会返回一个错误。
singleEvents boolean是否将循环事件扩展为实例并且只返回单个一次性事件和循环的实例事件,而不是潜在的重复事件本身。可选的。默认为False。
这种情况似乎是在谷歌将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,但我也得到标记为重复的事件。
带分页
$events = $service->events->listEvents('primary');
while(true) {
foreach ($events->getItems() as $event) {
echo $event->getSummary();
}
$pageToken = $events->getNextPageToken();
if ($pageToken) {
$optParams = array('pageToken' => $pageToken);
$events = $service->events->listEvents('primary', $optParams);
} else {
break;
}
}