[英]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.