簡體   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