将所有域成员插入到组中

时间:2015-01-10 13:14:32

标签: google-apps-script google-api google-admin-sdk google-groups-api

我目前正在编写一个用于管理Google网上论坛的插件,并使用Admin SDK Directory API来循环检索并检索所有群组成员并进行更改等。

我发现的一个奇怪问题是,当“域名的所有成员”已添加到群组中时,不会提供任何成员电子邮件。例如,如果我检索该组的所有成员,则将以以下格式返回每个成员:

  {
   "kind": "admin#directory#member",
   "etag": "\"ABCDEFGHIJKLMNOPQRSTUV123456789\"",
   "id": "123455678910",
   "email": "email@myDomain.com",
   "role": "MEMBER",
   "type": "USER"
  },

但是,如果您added all users within the domain to a group,则在检索此“成员”时,会以以下格式返回:

  {
   "kind": "admin#directory#member",
   "etag": "\"ABCDEFGHIJKLMNOPQRSTUV123456789\"",
   "id": "123455678910",
   "role": "MEMBER",
   "type": "CUSTOMER"
  },

这对于检索很好,因为我可以通过“类型”确定“域中的所有用户”始终是“客户”,然后我只是给它一个任意的电子邮件地址以显示在我的界面中(我'使用'*@domain.com'只是因为)。

但是,当我使用'Insert' method更新群组成员列表时,它需要一个电子邮件地址(它指的是'memberkey',但我知道这必须是一个电子邮件地址)。

它不接受虚拟地址,例如*@domain.com(它返回一个错误,该特定地址存在,所以我猜它在后台使用),如果我使用现有地址并尝试覆盖在尝试将现有成员转换为“所有用户”值时,从“用户”到“客户”的'类型',这不起作用(我怀疑'type'字段不允许'Customer'作为可写字段,只有一个可读的)。

我的问题:似乎没有一种方法可以将“在域中添加所有用户”整齐地添加到一个组中,而无需遍历域并逐字逐句地添加所有成员。这种方法是否存在,我错过了它?或者是否有更简洁的方法将所有成员添加到组中而不循环遍历域中的所有成员并将它们逐个添加到组中?

1 个答案:

答案 0 :(得分:2)

即使回到配置API天,也没有API方法存在。组设置中的任何内容对于此类组都不同,它似乎是不受支持的Member Resource。尝试将现有成员修改为type: 'CUSTOMER'也会失败。

但是,您可以在管理面板用户界面中将一个组设置为"所有成员"然后使用该组的地址作为代理成员。即它是传播的所有成员特征。这是一种解决方法,而不是直接的答案,但正如我在上面所述,真正的答案是"否"。