仅获取 Google 套件用户列表中自定义字段的值

Getting only value of custom fields in Google Suite User list

我在 Google 套件的用户中创建了自定义字段。 类别:预测 他们之中: 名称:'foresatt epost',type:email,编号:多个值

我想使用 Google 脚本列出这些值。我用这个: https://developers.google.com/admin-sdk/directory/v1/quickstart/apps-script

要编写此代码:

function listUsers() {
  var optionalArgs = {
    customer: 'my_customer',
    maxResults: 10,
    orderBy: 'email',
    projection: 'custom',
    customFieldMask:'Foresatt' 
  };
  var response = AdminDirectory.Users.list(optionalArgs);
  var users = response.users;
  if (users && users.length > 0) {
    Logger.log('Users:');
    for (i = 0; i < users.length; i++) {
      var user = users[i];
      var foresatt = user.customSchemas;
      Logger.log('%s (%s)', user.primaryEmail, user.name.fullName, foresatt);
    }
  } else {
    Logger.log('No users found.');
  }
}

可行,但我只想获取值。我现在得到的:

{Foresatt={
  foresatt_mob=[{value=X#X#X#X#, type=work}, {type=work, value=X#X#X#X#}, {type=work, value=X#X#X#X#}], 
  foresatt_epost=[{value=xx@xx.no, type=work}, {type=work, value=xy@xx.no}, {value=yy@xx.no, type=work}], 
  foresatt_navn=[{type=work, value=Xx}, {value=Xy, type=work}, {type=work, value=Yy}]
  }
}

我想得到的:xx@xx.no, xy@xx.no, yy@xx.no

试过好几样东西,恐怕经验不够。

var epost = foresatt.foresatt_epost;

结果:类型错误:无法读取 属性 'foresatt_epost'

var epost = foresatt('foresatt_epost');

结果:类型错误:foresatt 不是函数

请告诉我,如何只获取字段 'foresatt epost' 中的值?

我相信你的目标如下。

  • 您想从以下对象中检索 xx@xx.no, xy@xx.no, yy@xx.no 的值:
const object = {
  Foresatt: {
    foresatt_mob: [
      { value: "X#X#X#X#",type: "work"}, 
      { value: "X#X#X#X#",type: "work"},
      { value: "X#X#X#X#",type: "work"},
    ],
    foresatt_epost: [
      { value: "xx@xx.no", type: "work"},
      { value: "xy@xx.no", type: "work"},
      { value: "yy@xx.no", type: "work"},
    ],
    foresatt_navn: [
      { type: "work", value: "Xx"},
      { type: "work", value: "Xy"},
      { type: "work", value: "Yy"},
    ]
  }
}

在这种情况下,可以从 object.Foresatt.foresatt_epost 数组中检索值。

示例脚本:

const object = {}; //Your object

const res = object.Foresatt.foresatt_epost.map(e => e.value);
console.log(res)  // Outputs: [ 'xx@xx.no', 'xy@xx.no', 'yy@xx.no' ]
  • 如果user.customSchemas是上面的对象,脚本如下
var foresatt = user.customSchemas;
const res = foresatt.Foresatt.foresatt_epost.map(e => e.value);
console.log(res)
  • 如果要以逗号分隔的字符串形式检索值,可以使用 res.join(",").

参考文献:

注意: 如果不能保证您的 属性 会存在于您的 object 中,您可以使用 (object.property||[]).map(...) 而不是 object.property.map(...) 来避免错误 Uncaught TypeError: Cannot read property 'forEach' of undefined .