从 Google Calendar API 获取澳大利亚的假期列表

发布时间:2021-03-06 19:21

我正在使用

https://www.googleapis.com/calendar/v3/calendars/en.australian%23holiday%40group.v.calendar.google.com/events?key=YourApiKey

获得澳大利亚公共假期,但我收到空物品数组

{
 "kind": "calendar#events",
 "etag": "\"p32kslj59m6eeu0g\"",
 "summary": "Holidays in Australia",
 "updated": "2021-03-05T08:30:05.375Z",
 "timeZone": "UTC",
 "accessRole": "reader",
 "defaultReminders": [],
 "nextPageToken": "CjASLgojMjAyMTA0MDVfNjBvMzBjaGk2b28zMGMxZzYwbzMwZHI1NmsYkN324_Pw7gIaDwgAEgAYmKz8oN6Y7wIgASIHCAIQzunfEQ==",
 "items": []
}

知道如何度过澳大利亚假期吗?

回答1

Google Calendar API 正在返回正确的结果,但它会跨多个页面返回这些结果。您可以通过以下方式获取下一页:

https://www.googleapis.com/calendar/v3/calendars/en.australian%23holiday%40group.v.calendar.google.com/events?key=YourApiKey&pageToken=CjASLgojMjAyMTA0MDVfNjBvMzBjaGk2b28zMGMxZzYwbzMwZHI1NmsYkN324_Pw7gIaDwgAEgAYmKz8oN6Y7wIgASIHCAIQzunfEQ==

在此处查看有关分页的更多信息:https://developers.google.com/calendar/v3/pagination
客户端库可以轻松处理这些多页响应。

页面大小默认为 250 个事件,但这也包括您未请求的已删除事件。此特定日历上的前 250 个活动已标记为已删除,因此您会看到一个空白页面。

查看详情:https://developers.google.com/calendar/v3/reference/events/list

<块引用>

maxResults(整数)
一个结果页上返回的最大事件数。 结果页面中的事件数可能少于此值,或者根本没有,即使有更多与查询匹配的事件。响应中的非空 nextPageToken 字段可以检测到不完整的页面。默认情况下,该值为 250 个事件。页面大小永远不能超过 2500 个事件。可选。

我能够使用以下方法将所有内容强制放到一个页面上,但这确实不是一个好的答案。如果事件总数大于 2500,您仍然可能会得到一个不完整的列表: https://www.googleapis.com/calendar/v3/calendars/en.australian%23holiday%40group.v.calendar.google.com/events?maxResults=2500&key=[YOUR_API_KEY]'

回答2

似乎有一个错误,初始响应没有返回任何事件,但是有一个页面令牌 这不是系统的预期运行方式。我已提交issue report

try me

请求;

卷曲\

'https://www.googleapis.com/calendar/v3/calendars/en.australian%23holiday%40group.v.calendar.google.com/events?key=[YOUR_API_KEY]' \
  --header 'Accept: application/json' \
  --compressed

退货

{
 "kind": "calendar#events",
 "etag": "\"p33kpjmcjvaeuu0g\"",
 "summary": "Holidays in Australia",
 "updated": "2021-03-06T07:14:02.000Z",
 "timeZone": "UTC",
 "accessRole": "reader",
 "defaultReminders": [],
 "nextPageToken": "CjASLgojMjAyMTA0MDVfNjBvMzBjaGk2b28zMGMxZzYwbzMwZHI1NmsYkN324_Pw7gIaDwgAEgAYgMXbj4-b7wIgASIHCAIQ5I7jEQ==",
 "items": []
}

它应该在哪里返回事件

如果我再添加下一个pagetoken

请求

卷曲“https://www.googleapis.com/calendar/v3/calendars/en.australian%23holiday%40group.v.calendar.google.com/events?pageToken=CjASLgojMjAyMTA0MDVfNjBvMzBjaGk2b28zMGMxZzYwbzMwZHI1NmsYkN324_Pw7gIaDwgAEgAYgMXbj4-b7wIgASIHCAIQ5I7jEQ%3D%3D&key= [ YOUR_API_KEY]'
--header '接受:应用程序/json'
--压缩

回复

{
 "kind": "calendar#events",
 "etag": "\"p32e9tk5uvaeuu0g\"",
 "summary": "Holidays in Australia",
 "updated": "2021-03-06T07:14:02.000Z",
 "timeZone": "UTC",
 "accessRole": "reader",
 "defaultReminders": [],
 "nextPageToken": "CjASLgojMjAyMjEyMjZfNjBvMzBjaGk2NG8zNGMxZzYwbzMwZHI1Nm8YsM-liJbz7gIaDwgAEgAYgMXbj4-b7wIgASIHCAIQvo_jEQ==",
 "items": [
  {
   "kind": "calendar#event",
   "etag": "\"3227284619238000\"",
   "id": "20200425_60o30chi6so3gc1g60o30dr56g",
   "status": "confirmed",
   "htmlLink": "https://www.google.com/calendar/event?eid=MjAyMDA0MjVfNjBvMzBjaGk2c28zZ2MxZzYwbzMwZHI1NmcgZW4uYXVzdHJhbGlhbiNob2xpZGF5QHY",
   "created": "2021-02-18T09:58:29.000Z",
   "updated": "2021-02-18T09:58:29.619Z",
   "summary": "ANZAC Day Observed (Victoria)",
   "description": "Holiday or observance in: Victoria",

正确返回响应。