Google日历列表事件方法不返回任何事件

时间:2016-10-07 13:02:20

标签: php google-calendar-api

Events: list未返回所有事件。

我在日历上看到很多活动,但是当我致电Events: list时,我只会收到其中一些。

这不是maxResults太低的问题。我把它设置为2500,最大值。我得到1251左右,我通过API删除了大约24,现在它返回1227.但是日历上还有一堆不会回来。

这也不是页面令牌的问题。我循环查看其余部分是否在下一个页面列表中,但是当我在第一页之后调用getNextPageToken时,它是空的。

我使用的可选参数是:

    $optParams = array(
        'maxResults' => 2500,
        'singleEvents' => TRUE,
        'pageToken' => $pageToken,
    );

如果我将singleEvents设置为false或将其删除,Google会回复错误。

  

singleEvents boolean是否将重复事件扩展到实例中   并且只返回单个一次性事件和重复出现的实例   事件,但不是潜在的重复事件本身。可选的。   默认值为False。

当Google将GMail名称更改为G suites时,似乎开始发生这种情况。

我的代码如下:(当我var_dump $ calendarList时,我只得到1个日历。我使用类似的代码首先添加日历事件。)

$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:奇怪的是,虽然我传入了“单一事件”。 =&GT;是的,我也得到了标记为重复的事件。

1 个答案:

答案 0 :(得分:1)

用分页

$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;
  }
}