【问题标题】:Get All Calendars in Google Org via Google API通过 Google API 获取 Google 组织中的所有日历
【发布时间】:2024-05-20 05:45:02
【问题描述】:

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

问题:我知道我可以使用 CalendarList.list 获取日历列表,但前提是用户或服务帐户的列表中包含所有日历,即使那样它也并不总是准确的,因为日历并不总是被添加到service account's calendar list,用户可能会从他们的列表中删除日历。

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

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

【问题讨论】:

  • 这在 webapps 论坛中可能会更好。看看那边有没有类似的帖子。 webapps.stackexchange.com/questions/39296/…
  • 感谢您的建议,但运气不佳:\ 另外,我正在寻找使用 Google API 而非应用程序的解决方案。
  • @Rodger 这是一个编程问题,而不是 GSuite Web 应用程序问题。 Web 应用无法通过服务帐户帮助取回信息

标签: google-api calendar google-calendar-api google-admin-sdk


【解决方案1】:

您需要使用服务帐户为每个用户获取一个令牌,为此您需要每个用户的电子邮件,您可以通过发起 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] 是否也会返回服务帐户用户电子邮件?除了实际的用户日历之外,我还有由服务帐户创建的日历,这些日历也属于该服务帐户。谢谢!
  • 不抱歉我不知道,你可以测试一下看看。如果没有,您可以采取一种解决方法,将服务帐户日历的访问权限授予单个用户,并通过该用户检索这些日历,并且可以按日历字段之一进行过滤
  • 如果对您有帮助,请考虑接受answer
  • @AndresDuarte 我看到你有 3 个脚注,但没有一个脚注引用提到 #3。应该在答案中指出它吗?
【解决方案2】:

不幸的是,你不能。获取用户有权访问的日历列表的唯一方法是通过 calendarlist.list 方法。这样做的问题是,您必须确保所有用户日历都实际添加到日历列表中,但情况并非总是如此。

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

【讨论】:

  • 标记为正确。最终只是手动执行此操作。就像上面提到的 DalmTo 一样,不可能获取所有日历,包括服务帐户创建的日历。
最近更新 更多