如何从谷歌日历API获取当前事件?

时间:2016-12-05 19:05:02

标签: javascript google-calendar-api gapi

我正在尝试使用Google Calendar API方法gapi.client.calendar.events.list来检索日历 上的事件。

我可以成功过滤开始日期和结束日期。但是,如果一个事件昨天开始并且仍然在进行中,过滤今天开始的事情对我没有帮助。

    var request = gapi.client.calendar.events.list({
      'calendarId': 'my calendar id',
      // shows things that have not yet started
      'timeMin': (new Date()).toISOString(),
      'showDeleted': false,
      'singleEvents': true,
      'orderBy': 'startTime'
    });

如何查找当前正在进行的日历上的事项列表?

我(显然)想避免拉一周的活动并解析它。

2 个答案:

答案 0 :(得分:0)

没有直接查询当前事件的方法,但您当然可以给它一个有限的最小和最大时间,因此您只需要搜索少量事件。如果您的活动是定期的并且持续时间可以预测,那么您可能只需要给它一个。

events = client.events().list(calendarId='primary',
                              timeMin='2011-12-22T09:00:00Z',
                              timeMax='2011-12-22T22:00:00Z').execute()

有关详情,请参阅Google Calendar API的官方文档:https://developers.google.com/google-apps/calendar/?csw=1

答案 1 :(得分:0)

所以我来到这个线程寻找相同的答案但无济于事,所以这就是你可以做的:

    $data = self::$service->events->listEvents(self::$calendarId, $optParams);
    $curr_time = time();
    $active_meetings = array();

    if (count($data->getItems()) > 0) {  
        foreach ($data->getItems() as $event) {
            $start = date("U", strtotime($event->start->dateTime));
            $end   = date("U", strtotime($event->end->dateTime));
            if(($start > $curr_time) && ($end < $curr_time))
            {
                $active_meetings[$event->id] = $event->summary;
            }   
        }
    }
    return $active_meetings;

这里只是将事件恢复到 1 小时前的事件到 1 小时后的事件,然后将它们的开始时间和结束时间与当前时间进行比较。

这将列出当前正在进行的事件。谢谢