Google 日历 API 中只有 Public 个事件
Only Public Events from Google Calendar API
问题
我需要通过客户端的 Javascript 从 public 日历中提取 恰好 12 public 个事件,或者尽可能多的 public 事件有。示例:
- 日历共有 14 个活动。 3 个是私人的,所以我预计 11 个。
- 日历共有 18 个活动。前 3 个是私人的。我预计有 12 个事件,而不是 9 个。
我一直在使用 Google Calendar API Explorer 收效甚微(link 将带您到 API 资源管理器,其中填写了我一直使用的字段)。似乎没有办法告诉 API 不包括私人活动。
注意:我在没有 OAuth 的情况下执行此 API 调用。事件是使用 Google 日历 Web 界面发布的,因此我认为扩展属性不在解决方案之内。我的 public Google 日历 ID:rvv7ae2s15ma471lqqo9t5h74s@group.calendar.google.com
一个糟糕的解决方案
如果您查看 JSON 响应,您会看到私有事件具有以下 属性 和值:
"visibility": "private"
我能做的就是用 maxResults=12 调用 API,然后通过检查上面的 JSON 属性 来简单地过滤掉任何私人事件。
- 如果 nextPageToken == null,则日历不再有任何事件并且检索到的结果数量无关紧要。
- 如果 nextPageToken != null 并且在过滤掉私人事件后我剩下的事件少于 12 个,我可以请求再次调用 Google 日历 API next 24 个事件(通过传入非空 nextPageToken)。如果此响应的 nextPageToken != null,并且最后两次调用的事件数之和不等于 12,我可以请求 接下来的 48 个事件,依此类推,直到我有12 public 个事件。
问题是我可能必须多次调用 Google 日历 API 才能获得所需的事件数。我必须为 多个 日历执行此过程(例如,如果我有 4 个 public google 日历并且每个日历平均需要 3 API调用获取 12 个事件,我将执行 12 个不同的 AJAX 调用只是为了获取数据......)。最重要的是我得到 12 个事件或直到日历用完。
一个好的解决方案
我找不到解决这个问题的好方法。我仔细检查了 Google APIs Explorer 中的所有字段,运气绝对为零。任何帮助,将不胜感激。
我找不到我所渴望的 'Good Solution' 的答案,但我确实找到了一个可以接受的折衷方案。
一个好的解决方案
在我的问题中,我曾声明我必须从多个日历中执行此操作 'get only public events',如果每个日历平均需要 3 API 次调用才能获得 X public事件,我需要调用 Google Calendar API 3*C,其中 C = 日历数。
Google API 客户端库提供了一个叫做 Batch Requests 的东西,它允许我一次调用多个 API 调用!因此,我可以使用批处理请求在一个请求中获取 C 日历的所有事件,过滤掉任何私人事件,使用 C >= 日历发出另一个批处理请求,等等。
总之,我可以在平均 3 API 个请求中获得 C 日历的 X public 个事件,而不是 3*C 个请求。
问题
我需要通过客户端的 Javascript 从 public 日历中提取 恰好 12 public 个事件,或者尽可能多的 public 事件有。示例:
- 日历共有 14 个活动。 3 个是私人的,所以我预计 11 个。
- 日历共有 18 个活动。前 3 个是私人的。我预计有 12 个事件,而不是 9 个。
我一直在使用 Google Calendar API Explorer 收效甚微(link 将带您到 API 资源管理器,其中填写了我一直使用的字段)。似乎没有办法告诉 API 不包括私人活动。
注意:我在没有 OAuth 的情况下执行此 API 调用。事件是使用 Google 日历 Web 界面发布的,因此我认为扩展属性不在解决方案之内。我的 public Google 日历 ID:rvv7ae2s15ma471lqqo9t5h74s@group.calendar.google.com
一个糟糕的解决方案
如果您查看 JSON 响应,您会看到私有事件具有以下 属性 和值:
"visibility": "private"
我能做的就是用 maxResults=12 调用 API,然后通过检查上面的 JSON 属性 来简单地过滤掉任何私人事件。
- 如果 nextPageToken == null,则日历不再有任何事件并且检索到的结果数量无关紧要。
- 如果 nextPageToken != null 并且在过滤掉私人事件后我剩下的事件少于 12 个,我可以请求再次调用 Google 日历 API next 24 个事件(通过传入非空 nextPageToken)。如果此响应的 nextPageToken != null,并且最后两次调用的事件数之和不等于 12,我可以请求 接下来的 48 个事件,依此类推,直到我有12 public 个事件。
问题是我可能必须多次调用 Google 日历 API 才能获得所需的事件数。我必须为 多个 日历执行此过程(例如,如果我有 4 个 public google 日历并且每个日历平均需要 3 API调用获取 12 个事件,我将执行 12 个不同的 AJAX 调用只是为了获取数据......)。最重要的是我得到 12 个事件或直到日历用完。
一个好的解决方案
我找不到解决这个问题的好方法。我仔细检查了 Google APIs Explorer 中的所有字段,运气绝对为零。任何帮助,将不胜感激。
我找不到我所渴望的 'Good Solution' 的答案,但我确实找到了一个可以接受的折衷方案。
一个好的解决方案
在我的问题中,我曾声明我必须从多个日历中执行此操作 'get only public events',如果每个日历平均需要 3 API 次调用才能获得 X public事件,我需要调用 Google Calendar API 3*C,其中 C = 日历数。
Google API 客户端库提供了一个叫做 Batch Requests 的东西,它允许我一次调用多个 API 调用!因此,我可以使用批处理请求在一个请求中获取 C 日历的所有事件,过滤掉任何私人事件,使用 C >= 日历发出另一个批处理请求,等等。
总之,我可以在平均 3 API 个请求中获得 C 日历的 X public 个事件,而不是 3*C 个请求。