如何修改Google Apps Script脚本通过Admin Directory API获取特定部门用户
修改Admin Directory API脚本以获取特定部门用户
嘿,这事儿很简单,只需要给AdminDirectory.Users.list()添加一个过滤查询参数就能实现。Google Admin Directory API支持用query参数精准筛选用户,咱们直接在现有参数里加这个就行。
修改后的完整函数示例
function listSpecificDepartmentUsers() { var ss = SpreadsheetApp.getActive(); var pageToken, page, count = 0; var listArray = []; // 表头保持不变 listArray.push(['full name', 'first name', 'last name', 'email', 'department', 'ID']); // 替换成你要筛选的目标部门名称 const targetDepartment = "Engineering"; do { page = AdminDirectory.Users.list({ domain: 'example.co.uk', orderBy: 'givenName', maxResults: 100, pageToken: pageToken, // 关键新增:用query过滤部门 query: `department='${targetDepartment}'` }); if (page.users) { for (var i = 0; i < page.users.length; i++) { var user = page.users[i]; listArray.push([ user.name.fullName, user.name.givenName, user.name.familyName, user.primaryEmail, user.organization.department || "无部门", // 处理没有部门的用户 user.id ]); count++; } } pageToken = page.nextPageToken; } while (pageToken); // 将数据写入表格(补全你原有的写入逻辑) if (listArray.length > 1) { ss.getSheetByName("用户列表").getRange(1, 1, listArray.length, listArray[0].length).setValues(listArray); } Logger.log(`共获取到 ${count} 名目标部门用户`); }
关键修改点说明
- 新增
query参数:这是筛选的核心,语法是department='目标部门名称',用单引号包裹部门名可以避免名称里有空格或特殊字符导致的语法错误。如果要匹配多个部门,可以用OR逻辑,比如query: "department='Engineering' OR department='Product'"。 - 容错处理:添加了
user.organization.department || "无部门",避免因为某些用户没设置部门导致脚本报错。 - 函数名优化:把原来的
listAllUsers改成listSpecificDepartmentUsers,更贴合功能,方便后续维护。
注意事项
- 确保你的脚本已经授权了Admin Directory API(在Google Apps Script的「服务」面板里添加该服务)。
- 部门名称要和Google Workspace后台里的名称完全一致(区分大小写)。
- 如果需要按组织单元(而非部门)筛选,可以把
query改成orgUnitPath='/Engineering/Team-A',路径要和后台的组织单元路径完全匹配。
内容的提问来源于stack exchange,提问作者Moonie
相关产品推荐
相关产品推荐

