google-apps-script - Google Script/Sheet 不确定如何从用户个人资料中提取员工信息部分的信息,例如员工 ID 和职位
问题描述
我有一个脚本,可以用所需的信息填充工作表,但我不确定如何从用户配置文件的“员工信息”部分检索数据。我想要以下 4 件物品,我缺少什么?我还查看了Admin SDK Directory API,但在添加 externalIds[] 时没有运气,如果可以,请帮助指出正确的方向
- 员工ID
- 职称
- 员工类型
- 部门
function listAllUsers() {
var sheet = SpreadsheetApp.getActive().getSheetByName('Users');
sheet.getRange(1, 8).setValue(Utilities.formatDate(new Date(), "GMT", "HH:mm dd/MM/yyyy"));
var pageToken;
var page;
n = 0;
do {
page = AdminDirectory.Users.list({
domain: 'domain.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];
sheet.getRange(n + i + 2, 1).setValue(user.name.fullName);
sheet.getRange(n + i + 2, 2).setValue(user.name.givenName);
sheet.getRange(n + i + 2, 3).setValue(user.name.familyName);
sheet.getRange(n + i + 2, 4).setValue(user.primaryEmail);
sheet.getRange(n + i + 2, 5).setValue(user.orgUnitPath);
SpreadsheetApp.flush();
}
} else {
Logger.log('No users found.');
}
n+=100;
pageToken = page.nextPageToken;
} while (pageToken);
}
解决方案
我假设您需要以下数据:
externalIds
和都是organizations
数组。它们允许同一个人的多组数据。
假设您的数据库中每个人只有一组,您可以尝试:
user.externalIds[0].value
user.organizations[0].title
user.organizations[0].type
user.organizations[0].department
PS:我没有使用过这个 API,这些建议是基于我对文档的阅读。让我知道它是否有效。祝你好运。
PPS:我还建议一次性将所有数据发送到工作表,以尽量减少对工作表的调用
sheet.getRange(n + i + 2, 1, 1, 5).setValues([user.name.fullName, user.name.givenName, user.name.familyName, user.primaryEmail, user.orgUnitPath]);
将所有用户数据放在一个数组中并一次性发布到工作表可能会更有效。
您还可以避免调用SpreadsheetApp.flush()
每个用户。最好在发布数据结束时执行一次。
编辑
为避免因丢失而失败externalId
,您可以尝试:
if (user.externalIds) {
var extID = user.externalIds[0].value;
} else {
extID = null;
}
然后发布extId
到工作表。
推荐阅读
- mysql - 存储过程 - 在一个查询中插入和更新
- sonarqube - GitHub Actions:必须为 SonarScanner 使用的 GITHUB_TOKEN 分配哪些权限?
- reactjs - 在微前端访问其他子项目页面时,容器的主要组件看起来坏了
- angular - clinet后的模块点击img但它不工作
- c - 这个错误是什么意思:“free(): double free detected in tcache 2”
- django - 在 django 中使用外键进行分类
- javascript - 在页面中加载 {{form.media}} javascripts 后在 Django 中停止工作
- java - 来自 MainActivity 中 Fragment 调用的 func 中的 setText 问题
- python - CNN模型进展
- java - 我正在尝试在 Android Studio 中创建一个登录页面,但我的按钮突然消失了,之前它运行良好