【问题标题】:Google app maker: How to list existent groups?谷歌应用程序制造商:如何列出现有组?
【发布时间】:2018-10-16 16:47:53
【问题描述】:

我通过他们的应用程序制造商界面创建了一个新的谷歌应用程序。我添加了“Google Admin Directory API”作为服务和“目录”作为数据源。我创建了一个包含 2 个表的页面,一个列出了我的域中的所有用户(这已经在工作),另一个表列出了我的域中的所有组(不工作)。我怎样才能做到这一点?这可以通过他们的小部件来完成,还是我必须创建一个脚本并以编程方式调用管理 API,然后将数据绑定到表?

【问题讨论】:

  • 你必须通过脚本来完成。
  • @Morfinismo 我已经向应用程序添加了一个脚本,并粘贴了我在这里找到的“ListAllGroups”示例代码github.com/gsuitedevs/apps-script-samples/blob/master/advanced/…,但我收到一个错误“Uncaught ReferenceError: AdminDirectory is not defined at page = AdminDirectory.Groups.list({ (NewScript:8)"。我是否必须启用 google API 脚本才能让我的应用与管理 API 对话?
  • 您可能在客户端脚本中使用该代码,而不是在服务器脚本中。您必须在服务器脚本中使用它。
  • @Morfinismo 请在下面查看我的评论。

标签: google-app-maker


【解决方案1】:

由于您在使用目录模型时已经启用了 Admin Directory API,因此您现在要做的就是从服务器脚本中调用示例代码。在服务器脚本中,添加示例代码:

function listAllGroups() {
  var pageToken;
  var page;
  do {
    page = AdminDirectory.Groups.list({
      domain: 'example.com',
      maxResults: 100,
      pageToken: pageToken
    });
    var groups = page.groups;
    if (groups) {
      for (var i = 0; i < groups.length; i++) {
        var group = groups[i];
        Logger.log('%s (%s)', group.name, group.email);
      }
    } else {
      Logger.log('No groups found.');
    }
    pageToken = page.nextPageToken;
  } while (pageToken);
}

然后您可以通过在客户端脚本中使用以下内容来简单地调用服务器脚本:

google.script.run.withSuccessHandler(function(response){
    console.log(response);
}).withFailureHandler(function(err){
    console.log(err);
}).listAllGroups();

您可以查看参考here。我希望这会有所帮助!

【讨论】:

  • 我已将代码 sn-p 添加到我的客户端和服务器脚本中。但是,我仍然收到错误“GoogleJsonResponseException: Not Authorized to access this resource/api at listAllGroups”,这似乎与权限相关。我是否必须在不同级别启用 Admin API?
  • @jorgeACacon 在这种情况下,您无权通过 api 读取组。确保您使用的是具有这些权限的管理员用户。超级管理员用户应该没有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多