通过 Google API 获取 Google Org 中的所有日历

问题描述 投票:0回答:3

目标:我正在尝试获取我的 Gsuite 组织中的所有日历。

问题:我知道我可以使用

CalendarList.list
获取日历列表,但前提是用户或服务帐户的列表中包含所有日历,即使如此,它也并不总是准确的,因为日历并不总是被添加到服务帐户的日历列表,用户可能会从其列表中删除该日历。

问题:有没有办法获取我的 Google 组织中的每个日历?假设我的域名是@someorg.com。我想要每个用户的日历以及通过 api 创建的日历。我认为这可以通过 GSuite Admin SDK 实现,但我找不到任何可以让我做到这一点的东西。它只处理

Resources.calendars
,这与
Calendar
对象不同。

任何帮助表示赞赏!谢谢!

google-api calendar google-calendar-api google-admin-sdk
3个回答
4
投票

您需要使用服务帐户为每个用户获取令牌,为此您需要每个用户的电子邮件,您可以通过发出 Users.list 请求来获取该电子邮件 [1]。使用每个令牌,您可以为每个模拟用户执行 CalendarList.list 请求 [2],这将为您检索其订阅的用户日历。

如果您想要用户创建的日历,您可以过滤结果以获取将

accessRole
[3] 字段设置为
owner
的日历。您也可以通过将
showDeleted
参数设置为 true 来获取已删除的日历 [2]。

[1] https://developers.google.com/admin-sdk/directory/v1/reference/users/list

[2] https://developers.google.com/calendar/v3/reference/calendarList/list

[3] https://developers.google.com/calendar/v3/reference/calendarList


1
投票

不幸的是你不能。获取用户有权访问的日历列表的唯一方法是通过

calendarlist.list
方法。问题是您必须确保所有用户的日历实际上都已添加到
calendarlist
,但情况并非总是如此。

您可以做的是提示用户要求他们与您共享任何其他日历,但这对于服务帐户来说效果不佳。


0
投票

考虑到 Workspace(以前的 G-Suite)提供的官方文档,这可以通过使用具有

domain-wide authority delegation
的服务帐户来实现。

请检查以下文档:

© www.soinside.com 2019 - 2024. All rights reserved.