如何为域的所有用户添加Google日历?

时间:2013-02-28 21:39:10

标签: google-api google-calendar-api google-apps google-api-ruby-client

我无法弄清楚如何向所有域用户CalendarList添加日历。

到目前为止,我可以成功创建Calendar并创建域范围ACL,但我不知道如何将日历插入域用户列表。

使用ruby客户端API,它看起来像这样:

client = Google::APIClient.new
service = client.discovered_api("calendar", "v3")

calendar_response = JSON.parse(client.execute(:api_method => service.calendars.insert,
  :body => JSON.dump({"summary" => "events"}),
  :headers => { "Content-Type" => "application/json" }).response.body)

rule = {
  "scope" => {
    "type" => "domain",
    "value" => domain,
  },
  "role" => "writer"
}
acl_result = client.execute(:api_method => service.acl.insert,
  :parameters => { "calendarId" => calendar_response["id"] },
  :body => JSON.dump(rule),
  :headers => { "Content-Type" => "application/json" })

一切正常。它会创建日历,并与域中的所有人共享。我无法弄清楚的是如何将其明确添加到用户的日历列表中。

要添加到单个authed用户的日历列表,将如下所示:

list_params = {
  "calendarId" => calendar_response["id"],
  "hidden" => false,
  "selected" => true
}
calendar_list_result = client.execute(:api_method => service.calendar_list.insert,
  :body => JSON.dump(list_params),
  :headers => { "Content-Type" => "application/json" })

问题:

  • 如果我通过域管理员身份验证,是否可以为所有用户创建CalendarList项?
  • 如果是这样,可以使用单个命令完成,还是需要与每个用户ID进行通话?
  • 如果我需要为每个用户执行命令,我该如何获取用户ID?

1 个答案:

答案 0 :(得分:1)

如果我通过域管理员身份验证,是否可以为所有用户创建CalendarList项目? 不,你不能:(。

如果是,可以使用单个命令完成,还是需要与每个用户ID进行通话? 您必须为每个用户ID拨打电话。

如果我需要为每个用户执行命令,我该如何获取用户ID? 要检索用户ID,首先必须使用Admin SDK API https://developers.google.com/admin-sdk/directory/v1/guides/manage-users#get_all_domain_users列出域中的所有用户,然后为日历中的每个INSERT命令更改用户ID,以获取电子邮件地址。