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