【发布时间】:2018-09-16 09:40:39
【问题描述】:
我有以下(大部分)使用 Admin Directory API 的工作脚本。但是,我不想提取整个域 - 我只想提取特定部门的信息。
function listAllUsers() {
var ss = SpreadsheetApp.getActive();
var pageToken, page, count = 0;
var listArray = [];
listArray.push(['full name', 'first name', 'last name', 'email', 'department', 'ID'])
do {
page = AdminDirectory.Users.list({
domain: 'example.co.uk',
orderBy: 'givenName',
maxResults: 100,
pageToken: pageToken
});
var users = page.users;
if (users) {
for (var i = 0; i < users.length; i++) {
var user = users[i];
listArray.push([user.name.fullName, user.name.givenName, user.name.familyName, user.primaryEmail, user.organizations, user.id,]);
}
}
pageToken = page.nextPageToken;
break; // This means you only get one page
} while (pageToken);
try {
var outputSheet = ss.getSheetByName('allMembers');
outputSheet.getDataRange();
} catch(err) {
var outputSheet = ss.insertSheet('allMembers', 2);
}
outputSheet.getDataRange().clear();
outputSheet.getRange(1, 1, listArray.length, listArray[0].length).setValues(listArray);
outputSheet.getRange(1, 6, outputSheet.getLastRow(), 4).setHorizontalAlignment("center");
outputSheet.getRange(1, 1, outputSheet.getLastRow(), 1).setHorizontalAlignment("center");
var width = [150, 150, 180, 250, 250, 200];
formatSheet(outputSheet, width);
}
我尝试使用 user.organization[].domain 过滤到域,但收到错误消息。我将参数user.organizations 更改为user.organizations[].department,如in the Admin SDK reference 所述。
这最初抛出了一个SyntaxError,当更改为user.organizations[0].department时它抛出了错误消息:
TypeError:无法从未定义中读取属性“0”
我完全省略了括号并使用了user.organizations.department,但是得到了:
TypeError:无法从未定义中读取属性“部门”
另外,如果可能的话,我想单独列出部门和职位。目前,它以这种格式导出信息:
{customType=work, name=, location=002, title=Technical Support Manager, department=Technical Support, primary=true}
当前显示:
我想要的输出格式:
【问题讨论】:
-
如果您尝试以一种方式执行此操作并收到错误消息,那么共享所述代码和所述错误消息是否没有意义?您是否尝试过不同的查询?另外,您的部门和职称已经是不同的值,所以我不确定您遇到了什么困难。
-
已更新帖子以显示我尝试过的内容并提供一些屏幕截图以更好地解释事情。
标签: google-apps-script google-sheets google-admin-sdk