我如何从 Google 日历 API 中获取已结束事件的列表

How Can I Get List Of Ended Events From Google Calendar API

代码如下:

const calendar = google.calendar({ version: 'v3', auth });

const meetingsResponse = await calendar.events.list({
      calendarId: 'primary',
      timeMin: new Date(new Date().setHours(0,0,0,0)).toISOString(),
      maxResults: 1,
      singleEvents: true,
      orderBy: 'startTime',
     });

输出:?

有人知道问题出在哪里吗?

您可以将 timeMax 设置为当前 datetime 以获得已结束事件的列表。 如果您真的只想获得 1 个结果(最近结束的事件),您可以将 maxResults 保留为 1

timeMax

  • 筛选事件开始时间的上限(不包括)。
  • 这将是事件开始时间应配置的最大日期时间。

timeMin

  • 要过滤的事件结束时间的下限(不包括)
  • 这将是事件结束时间应该配置的最短日期时间。

例如:

timeMax = 2020-12-23T11:00:00Z(现在的日期时间)

事件 1 开始时间 = 2020-12-22T08:00:00Z

活动2开始时间=2020-12-23T14:00:00Z

  • events.list() 应该 return 事件 1(结束事件),因为事件 1 的开始时间小于 timeMax。

In your code, when you use timeMin to filter the dates, you are saying that the minimum datetime that the event's end time should be now. Hence, events.list() will return the events that has end time greater than the timeMin(now) which are events that are not yet ended.

样本:

timeMax = 2020-12-23T11:00:00Z

回复(删除了一些不必要的信息):

{
  ....

 "items": [
  {
   "kind": "calendar#event",
   "summary": "ended event 1",
   "start": {
    "dateTime": "2020-12-22T20:30:00+08:00"
   },
   "end": {
    "dateTime": "2020-12-22T21:00:00+08:00"
   }
  },
  {
   "kind": "calendar#event",
   "summary": "ended event 2",
   "start": {
    "dateTime": "2020-12-20T16:00:00+08:00"
   },
   "end": {
    "dateTime": "2020-12-20T16:30:00+08:00"
   }
  },
  {
   "kind": "calendar#event",
   "summary": "ended event 3",
   "start": {
    "dateTime": "2020-12-21T11:00:00+08:00"
   },
   "end": {
    "dateTime": "2020-12-21T11:30:00+08:00"
   }
  }
 ]
}