gpt4 book ai didi

javascript - 使用 nextpagetoken 在 Google Apps 脚本查询中提取超过 500 个结果

转载 作者:行者123 更新时间:2023-11-29 10:37:28 25 4
gpt4 key购买 nike

在对 this post 的有益回应中我了解到我一次最多可以从我的域目录中提取 500 个用户结果。现在,我正在尝试让脚本继续运行并提取 500 个批处理,直到它从域(或者在本例中为 OU)中提取所有用户并将它们全部添加到同一个电子表格中。

现在我的代码是这样的:

function writeToSpreadsheet(){
var values = [];
var users = AdminDirectory.Users.list({
domain:'klht.org',
maxResults: 500,
query: "orgUnitPath=/CleverTeachers/King"
}).users;
for (var i=0; i<users.length; i++){
values.push([users[i].name.fullName, users[i].primaryEmail]);
}
var spreadsheetID = '1JLDD2wm0_udmTn9ZHvdKhL_Ok3SvKYFqkBeiA1GdnYc';
SpreadsheetApp.openById(spreadsheetID).getSheets()[0].getRange(1, 1, values.length, values[0].length).setValues(values);
}

我上一篇文章的评论者指出“返回对象的一部分将是一个‘nextPageToken’,您可以将其添加到一个或多个后续查询中,直到您拥有所有用户为止。”他包括以下片段:

var usersPage2 = AdminDirectory.Users.list({
domain: 'klht.org',
maxResults: 500,
query: "orgUnitPath=/OU",
pageToken: nextPageToken
}).users;

我发现简单地将它附加在上面的代码下面会抛出一个“ReferenceError:“nextPageToken”未定义。(第 13 行,文件“代码”)”。现在我又卡住了。你能帮我完成这项工作吗?

最佳答案

我在上一个答案中提到的 nextPageToken 是第一个查询结果的属性。

为了最好地处理示例中未确定的最大用户数,您最好通过将查询包装到 AdminSDK 中的 while 循环来完成此操作,该循环在找不到更多用户时立即终止:

function writeToSpreadsheet(){
var values = [],
users = [],
userListQuery = {},
nextPageToken = '',
listObject = {
domain:'klht.org',
maxResults: 500,
query: "orgUnitPath=/CleverTeachers/King"
},
i = 0,
spreadsheetID = '1JLDD2wm0_udmTn9ZHvdKhL_Ok3SvKYFqkBeiA1GdnYc';

do {

if (nextPageToken && nextPageToken !== '') {
listObject.pageToken = nextPageToken;
}

userListQuery = AdminDirectory.Users.list(listObject);

// if there are more users than fit in the query a nextPageToken is returned
nextPageToken = userListQuery.nextPageToken;

// Add the query results to the users array
users = users.concat(userListQuery.users);

} while (nextPageToken);

for (i = 0; i < users.length; i += 1) {
values.push([users[i].name.fullName, users[i].primaryEmail]);
}

SpreadsheetApp.openById(spreadsheetID).getSheets()[0].getRange(1, 1, values.length, values[0].length).setValues(values);
}

关于javascript - 使用 nextpagetoken 在 Google Apps 脚本查询中提取超过 500 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34418624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com