使用Google Apps脚本将用户添加到Google网上论坛

时间:2019-09-27 14:12:13

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

我正在尝试使用Google Apps脚本将用户添加到Google网上论坛。

这是我尝试过的代码:

// Adds a user to a Google Group
function addUsertoGroup(userEmail) {
  var userEmail = 'Name@gmail.com'
  var groupId = "group-name@googlegroups.com";
  var group = GroupsApp.getGroupByEmail(groupId);

  // If email is already in group
  try { var hasMember = group.hasUser(userEmail);}
  catch(e){Logger.log(userEmail+" is already in the group"); return}

  var newMember = {email: userEmail, role: "MEMBER"};

  // This is the line which is throwing an error
  AdminDirectory.Members.insert(newMember, groupId);

运行时,我收到错误消息:

  

对directory.groups.get的API调用失败,并显示错误:未找到域。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:5)

说明

  • 您需要G Suite帐户才能使用AdminDirectory功能(或能够通过Apps脚本将用户添加到组中。
  • 您可以根据通过https://groups.google.com配置的组设置添加gmail或任何其他非同一域用户

解决方案

我通过script.gs拥有一个G Suite帐户,并且我测试了您共享的代码-完美无缺:)除了需要从G Suite帐户启用的以下内容以外。

导航到资源>高级Google服务... 并启用 Admin Directory API

Admin Directory API

就是这样。我创建了该论坛,启用了所有设置,使该论坛对所有人都可用,并且像一个超级按钮一样起作用。

也请您进一步说明或帮助。

编辑注释:

因此,这也是确保{strong>每个人(甚至可以将域外的人都可以添加为用户)的我必须遵循的做法,如Set Groups for Business sharing options所述。当您转到Groups for Business并浏览设置时,您将启用以下至关重要的选项-

Groups for Business

很显然,您可以根据需要随意调整所有其他设置。

答案 1 :(得分:0)

您正在尝试使用AdminDirectory服务,该服务仅适用于G Suite域中的G Suite管理员。因此,您需要拥有您的域,并且如果您将用户从您的域添加到您的域组中,它将可以正常工作。

即user@domain.com已添加到group@domain.com

根据示例代码,您尝试将gmail.com用户添加到公共Google网上论坛,因为您不能使用管理目录API,因为您不是管理公共网上论坛的域的管理员。

在这种情况下,就像您一样,您只能使用GroupsApp服务,并且该服务仅允许您检查用户是否在ggroup中或该角色是什么。

=>使用GroupsApp服务,无法将用户添加到公共Google网上论坛。

史蒂芬(Stéphane)