>我运行一个接收电子邮件地址的函数,然后检查此电子邮件是否已在组中注册,并且仅当未注册时,才将其添加为新成员
检查是通过运行以下函数完成的:
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
的列表,您还可以在其中找到与该用户关联的所有电子邮件,包括别名。之后,您只需检查这些电子邮件中是否已在您的组中。通过这种方式,您可以避免当前遇到的问题。
此外,我建议您查看这些链接,因为它们可能会有所帮助。
-
G Suite 管理员帮助 - 添加新成员时出现问题;
-
G Suite 管理员 SDK - 插入成员;
-
G Suite 管理员 SDK - 列出成员;
-
G Suite 管理员 SDK - 获取用户。