AdminDirectory.Members.list 通过电子邮件搜索



>我运行一个接收电子邮件地址的函数,然后检查此电子邮件是否已在组中注册,并且仅当未注册时,才将其添加为新成员

检查是通过运行以下函数完成的:

function CheckIfMemberExist(email)
{
var MemberExist = false;
var pageToken;
var page;
var groupEmail = 'MyGroupEmail';
var groupDomainName = 'MyGroupDomain';
do {
page = AdminDirectory.Members.list(groupEmail,{
domain: groupDomainName,
orderBy: 'Email',
maxResults: 100,
pageToken: pageToken
});
var members = page.members;
if (members) 
{
for (var i = 0; i < members.length; i++)
{
var memberEmail = members[i].email;
if(memberEmail.toLowerCase() == email.toLowerCase())
MemberExist = true;
}
} 
pageToken = page.nextPageToken;
} while (pageToken);
return MemberExist;
}

那么,只有当函数返回MemberExists = false时,我调用:

AdminDirectory.Members.insert(NewMember, groupEmail(;

问题是,有时,即使CheckIfMemberExist返回false,当我运行AdminDirectory.Members.insert时,我得到:对 directory.members.insert 的 API 调用失败,出现错误:成员已存在,脚本中断。 我不知何故怀疑谷歌识别出一种情况,即用户有另一封电子邮件与我尝试注册的电子邮件相关联,但我不知道如何解决这个问题 有什么想法吗? 谢谢

如果您尝试使用他们的电子邮件将成员添加到组中,它将起作用。但是,如果您稍后尝试添加另一个成员,其别名与插入的第一封电子邮件相关联,则无法正常工作。当您使用别名添加成员,然后尝试使用电子邮件地址添加成员时,也会出现相同的问题。

解决您问题的方法是使用 G Suite 管理员 SDK 中的Members:list,然后让列表中的每个成员使用该Users:get

Users:get将返回一个代表User resource的列表,您还可以在其中找到与该用户关联的所有电子邮件,包括别名。之后,您只需检查这些电子邮件中是否已在您的组中。通过这种方式,您可以避免当前遇到的问题。

此外,我建议您查看这些链接,因为它们可能会有所帮助。

  1. G Suite 管理员帮助 - 添加新成员时出现问题;

  2. G Suite 管理员 SDK - 插入成员;

  3. G Suite 管理员 SDK - 列出成员;

  4. G Suite 管理员 SDK - 获取用户。

最新更新