2017-04-04 10 views
0

Google Apps Scriptを使用して、Google Appsのすべてのスーパー管理者と委任管理者のリストを作成しています。pagetoken google appスクリプトの使用方法

私のスクリプトはうまく動作しますが、制限されたグーグルほど500人のユーザーに制限されています。また、GoogleではpageTokenを使用するように提案していますが、使い方がわかりません。

誰も私がどのように私はscript-を以下にpageTokenのを使うのですか理解するのに役立ちます:

function getAdmins(){ 
var fileArray = [["First Name", "Last Name", "Email", "Admin Role"]] 

    var optionalArgs = {"customer":"my_customer", maxResults: 500} 
    var allUsers = AdminDirectory.Users.list(optionalArgs).users 

    for (i=0; i<allUsers.length; i++){ 
    userDetails = allUsers[i] 
    var fName = userDetails.name.givenName 
    var lName = userDetails.name.familyName 
    var pEmail = userDetails.primaryEmail 
    var Admin = userDetails.isAdmin 
    var dAdmin = userDetails.isDelegatedAdmin 

    if (Admin === true) { 
    Admin = "Super Administrator" 
    } 
    else if (dAdmin === true){ 
     Admin = "Delegated Administrator" 
    } 
    Logger.log(Admin) 

    } 
    var ss = SpreadsheetApp.getActive() 
    var sheet = ss.getSheetByName("Admin Users") 
    fileArray.push([fName, lName, pEmail,Admin]); 

    Logger.log(fileArray) 



    sheet.getRange(1, 1, fileArray.length, 4).setValues(fileArray) 


    }} 
+0

この[example code](https://developers.google.com/apps-script/advanced/admin-sdk-directory#list_all_users)は、まさにあなたが望むものです。要するに、それぞれの呼び出しはnextPageToken(結果の次のページを識別するトークン)を返します。次の呼び出しでそのページを取得する必要があります。 –

+0

ありがとう、ありがとう、私はどのようにforループまたはスクリプト自体でそれを使用することができます習得したい。 –

答えて

0

pageTokenのを理解するには、戻り値(またはからの応答を)理解する必要があります

AdminDirectory.Users.list(optionalArgs) 

この関数は、reponse of the formatを返します。

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

:SER情報あなたは、「ユーザー」、あなたはまた、次のページが応答であるかを定義nextPageTokenキーを持つレスポンスオブジェクトから見ることができるように、あなたがそうのように、このnextPageTokenをつかむので

var allUsers = AdminDirectory.Users.list(optionalArgs).users 
//below the same is written in two seperate lines 
var page = AdminDirectory.Users.list(optionalArgs) 
var allUsers = page.users 

のようなキーを使用します

pageToken = page.nextPageToken; 

次に、あなたがそうのようなAdminDirectoryに新しいコールにpageTokenのを渡す:

var optionalArgs = {"customer":"my_customer", maxResults: 500, pageToken: pageToken} 
      page = AdminDirectory.Users.list(optionalArgs) 

があればこれはNEの、検索もnextPageToken上で、次のページを取得しますxtページを検索します。あなたはもはやpageTokenがなくなるまで再帰呼び出しを行います。

以下のコードは、example code on google developer pageのコードと@GlodyAroraのコードをマージして作成したものです。文字通り、サンプルコードで述べたdo whileループを追加しました。

function getAdmins(){ 
    var fileArray = [["First Name", "Last Name", "Email", "Admin Role"]] 
    var pageToken, page; 
    do { 
     var optionalArgs = {"customer":"my_customer", maxResults: 500, pageToken: pageToken} 
     page = AdminDirectory.Users.list(optionalArgs) 
     var allUsers = page.users 

     for (i=0; i<allUsers.length; i++){ 
     userDetails = allUsers[i] 
     var fName = userDetails.name.givenName 
     var lName = userDetails.name.familyName 
     var pEmail = userDetails.primaryEmail 
     var Admin = userDetails.isAdmin 
     var dAdmin = userDetails.isDelegatedAdmin 

     if (Admin === true) { 
     Admin = "Super Administrator" 
     }else if (dAdmin === true){ 
     Admin = "Delegated Administrator" 
     } 
     Logger.log(Admin) 
     var ss = SpreadsheetApp.getActive() 
     var sheet = ss.getSheetByName("Admin Users") 
     fileArray.push([fName, lName, pEmail,Admin]); 
     } 
     pageToken = page.nextPageToken; 
    } 
    while(pageToken); 
    Logger.log(fileArray) 
    sheet.getRange(1, 1, fileArray.length, 4).setValues(fileArray) 
} 

これは役立ちます。

+0

ありがとう、とても役に立ちました! –

関連する問題