我目前正在编写一个插件来管理 Google 群组,它使用Admin SDK Directory API来循环和检索所有群组成员并进行更改等。
我发现一个奇怪的问题是,当“域的所有成员”被添加到组时,没有提供任何成员电子邮件。例如,如果我检索组的所有成员,每个成员将按以下格式返回:
{
"kind": "admin#directory#member",
"etag": "\"ABCDEFGHIJKLMNOPQRSTUV123456789\"",
"id": "123455678910",
"email": "email@myDomain.com",
"role": "MEMBER",
"type": "USER"
},
但是,如果您已将域中的所有用户添加到组中,则当您检索此“成员”时,它会以以下格式返回:
{
"kind": "admin#directory#member",
"etag": "\"ABCDEFGHIJKLMNOPQRSTUV123456789\"",
"id": "123455678910",
"role": "MEMBER",
"type": "CUSTOMER"
},
这对于检索来说很好,因为我可以通过“类型”始终是“客户”来识别它是“域中的所有用户”,然后我只需给它一个任意电子邮件地址以显示在我的界面中(我正在使用*@domain.com' 只是因为)。
但是,当我使用“插入”方法更新群组成员列表时,它需要一个电子邮件地址(它指的是“memberkey”,但我知道这必须是一个电子邮件地址)。
它不接受诸如 *@domain.com 之类的虚拟地址(它返回一个错误,表明该特定地址存在,所以我猜它正在后台使用),如果我使用现有地址并尝试覆盖“类型” '从'用户'到'客户'试图将现有成员转换为'所有用户'值,这不起作用(我怀疑'类型'字段不允许'客户'作为可写字段,只有一个可读的)。
我的问题:似乎没有一种方法可以将“域中的所有用户”整齐地添加到一个组中,而不需要遍历域并逐个添加所有成员。这种方法是否存在而我只是错过了它?或者有没有一种更简洁的方法可以将所有成员添加到组中,而无需遍历域中的所有成员并将它们一个一个添加到组中?