目录 API - 如何在用户列表中使用 pageToken
Directory API - How to use pageToken in Users List
将 Google 应用程序脚本与 GSuite 目录 API 结合使用。我想列出根 OU 中的所有用户。此代码从目录中提取所有用户并过滤掉属于子 OU 成员的用户。
代码。
/**
* LIST USERS FROM ROOT OU
*/
function listUsers() {
var optionalArgs = {
domain: 'mydomain.com',
maxResults: 500,
orderBy: 'givenName'
};
var response = AdminDirectory.Users.list(optionalArgs);
var users = response.users;
var counter = 0;
if (users && users.length > 0) {
Logger.log('Liste des utilisateurs...\n');
for (i = 0; i < users.length; i++) {
var user = users[i];
/* FILTER OUT SUB-OU, PRINT ONLY MEMBERS IN ROOT OU */
if (user.orgUnitPath == '/') {
counter++;
Logger.log('Result #%s', counter.toString());
Logger.log('\nName : %s\nEmail : %s\nOU : %s\n', user.name.fullName, user.primaryEmail, user.orgUnitPath);
}
}
} else {
Logger.log('Nothing found...');
}
}
现在函数 listUsers 的上限为 500 个结果,但我的组织有更多的用户帐户。
我知道我的问题将通过使用 pageToken 参数得到解决,这个问题已被多次询问。我已经阅读了很多关于这个主题的帖子,但是,我没有找到任何明确的解释和使它适应 App Script 的方法。
如有任何帮助,我们将不胜感激。
我想通了
function listUsers(){
var values = [],
users = [],
userListQuery = {},
nextPageToken = '',
listObject = {
customer: 'my_customer',
query: "isSuspended=false",
maxResults: 500
},
i = 0,
j = 0;
do {
if (nextPageToken && nextPageToken !== '') {
listObject.pageToken = nextPageToken;
}
var userListQuery = AdminDirectory.Users.list(listObject);
// Si plus de maxResults retourner à nextPageToken
nextPageToken = userListQuery.nextPageToken;
// Ajout de résultats à la liste
users = users.concat(userListQuery.users);
} while (nextPageToken);
for (i = 0; i < users.length; i++) {
// Filtrer les résultats
if (users[i].orgUnitPath == '/') {
j++;
Logger.log('Résultat #%s', j.toString());
Logger.log('\nNom : %s\nCourriel : %s\nOU : %s\nDépartement : %s\n', users[i].name.fullName, users[i].primaryEmail, users[i].orgUnitPath, users[i].orgDepartment);
}
}
}
将 Google 应用程序脚本与 GSuite 目录 API 结合使用。我想列出根 OU 中的所有用户。此代码从目录中提取所有用户并过滤掉属于子 OU 成员的用户。
代码。
/**
* LIST USERS FROM ROOT OU
*/
function listUsers() {
var optionalArgs = {
domain: 'mydomain.com',
maxResults: 500,
orderBy: 'givenName'
};
var response = AdminDirectory.Users.list(optionalArgs);
var users = response.users;
var counter = 0;
if (users && users.length > 0) {
Logger.log('Liste des utilisateurs...\n');
for (i = 0; i < users.length; i++) {
var user = users[i];
/* FILTER OUT SUB-OU, PRINT ONLY MEMBERS IN ROOT OU */
if (user.orgUnitPath == '/') {
counter++;
Logger.log('Result #%s', counter.toString());
Logger.log('\nName : %s\nEmail : %s\nOU : %s\n', user.name.fullName, user.primaryEmail, user.orgUnitPath);
}
}
} else {
Logger.log('Nothing found...');
}
}
现在函数 listUsers 的上限为 500 个结果,但我的组织有更多的用户帐户。
我知道我的问题将通过使用 pageToken 参数得到解决,这个问题已被多次询问。我已经阅读了很多关于这个主题的帖子,但是,我没有找到任何明确的解释和使它适应 App Script 的方法。
如有任何帮助,我们将不胜感激。
我想通了
function listUsers(){
var values = [],
users = [],
userListQuery = {},
nextPageToken = '',
listObject = {
customer: 'my_customer',
query: "isSuspended=false",
maxResults: 500
},
i = 0,
j = 0;
do {
if (nextPageToken && nextPageToken !== '') {
listObject.pageToken = nextPageToken;
}
var userListQuery = AdminDirectory.Users.list(listObject);
// Si plus de maxResults retourner à nextPageToken
nextPageToken = userListQuery.nextPageToken;
// Ajout de résultats à la liste
users = users.concat(userListQuery.users);
} while (nextPageToken);
for (i = 0; i < users.length; i++) {
// Filtrer les résultats
if (users[i].orgUnitPath == '/') {
j++;
Logger.log('Résultat #%s', j.toString());
Logger.log('\nNom : %s\nCourriel : %s\nOU : %s\nDépartement : %s\n', users[i].name.fullName, users[i].primaryEmail, users[i].orgUnitPath, users[i].orgDepartment);
}
}
}