Google 目录 API 用户列表 orgDepartment returns 未定义

Google Directory API User list orgDepartment returns undefined

我正在遍历用户列表以提取一些数据。

Logger.log('\nName : %s\nEmail : %s\nOU : %s\nDepartment : %s\n', users[i].name.fullName, users[i].primaryEmail, users[i].orgUnitPath, users[i].orgDepartment);

姓名、电子邮件和 OU return 预期结果但不是部门。

有些用户帐户有部门数据,有些则没有,但无论如何结果总是会返回 'undefined'。我做错了什么?

完整代码在这里。

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);
  }
 }
}

问题

Users 资源没有顶级 属性 orgDepartment。尽管您可以使用 orgDepartment(以及 address 或其他 org 前缀字段)搜索 用户,但返回的对象中并未定义它(因此 undefined 值)。

解决方案

访问顶级 属性 organizations,这是一个 Array<Object>(该用户所属的组织)。它的元素结构如下(显然,你需要 department 属性):

{
  "name": string,
  "title": string,
  "primary": boolean,
  "type": string,
  "customType": string,
  "department": string,
  "symbol": string,
  "location": string,
  "description": string,
  "domain": string,
  "costCenter": string,
  "fullTimeEquivalent": integer
}

假设只有一个组织与用户关联,引用部门应如下所示:users[i].organizations[0].department

参考

  1. Users 资源表示 reference;
  2. 正在搜索 Users 个字段 reference