繁体   English   中英

在G-suite Admin SDK中获取所有已暂停用户的详细信息

[英]Fetch the details of all suspended users in G-suite Admin SDK

我正在尝试提取G-Suite Admin SDK中所有已暂停用户的详细信息,为此我在Google Apps脚本中编写了一个查询:

function fetchUser(){           
    var pageToken;
    var membersList = AdminDirectory.Users.list({
      domain: 'xyz.com',
      orderBy: 'email',
      query: isSuspended=true,
      maxResults: 100,
      pageToken: pageToken
    });  
    Logger.log('membersList:' +membersList);
}

我在logs得到的结果是:

[18-06-20 16:32:15:413 EDT] membersList:{"kind":"admin#directory#users","etag":"\"npJcgeAc7XbfkhvPm3glLSpkcPU/HMFwD2wLX237BRmKZQUJYB5ZE7U\""}

我无法在响应中看到用户列表,如G-suite-admin-SDK所述 ,该响应表示响应应类似于:

{
  "kind": "admin#directory#users",
  "etag": etag,
  "users": [
    users Resource
  ],
  "nextPageToken": string
}

我使用了用于search-query的search-users文档,该文档说使用isSuspended=true ,请问我做错了什么吗?

根据您链接的API文档,查询参数必须为string 您提供了一个无效查询query: isSuspended=true因此不执行任何查询。

您可能会对“搜索用户” API文档中使用看似“原始”变量和参数的示例感到困惑-这是因为其给出的示例仍需要进行URL编码

例子

所有查询都使用users.list方法,该方法具有类似于以下内容的HTTP请求(为了便于阅读,包含了换行符):

GET https://www.googleapis.com/admin/directory/v1/users
?domain =主域
&query =查询参数

查询参数必须经过URL编码。 例如,查询query=givenName:Jane*的URL编码为query=givenName%3AJane* 此页面上的所有示例均显示未编码的查询参数。 客户端库自动处理此URL编码。

您可以通过重新使用options变量来帮助自己并改善代码,例如:

function getAllSuspended() {
  // Set the constant options only once.
  const options = {
    domain: 'xyz.com',
    orderBy: 'email',
    query: 'isSuspended=true',
    maxResults: 100,
    fields: "nextPageToken,users"
  };
  // Could log the options here to ensure they are valid and in the right format.

  const results = [];
  do {
    var search = AdminDirectory.Users.list(options);
    // Update the page token in case we have more than 1 page of results.
    options.pageToken = search.nextPageToken;
    // Append this page of results to our collected results.
    if(search.users && search.users.length)
      Array.prototype.push.apply(results, search.users);
  } while (options.pageToken);

  return results;
}

客户端库和应用程序脚本

Apps脚本中的“高级服务”是封装基础REST API的Google API客户端库,因此您无需对传递给其方法的参数执行URL编码。 如果您决定不想使用客户端库,而是希望使用UrlFetchApp来查询URL,则需要对查询字符串进行URL编码。 (如果要发出很多简单,快速,不相关的请求,并且客户端库不提供BatchHttpRequest方法,则可以执行此操作:可以使用UrlFetchApp.fetchAll以获得更好的性能 。)

这是一个简单的错误:

function fetchUser(){           
        var pageToken;
        var membersList = AdminDirectory.Users.list({
          domain: 'xyz.com',
          orderBy: 'email',
          query: "isSuspended=true",
          maxResults: 100,
          pageToken: pageToken
        });  
        Logger.log('membersList:' +membersList);
    }

感谢@tehhowch帮助我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM