Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 仅获取Google Suite用户列表中自定义字段的值_Google Apps Script_Google Admin Sdk - Fatal编程技术网

Google apps script 仅获取Google Suite用户列表中自定义字段的值

Google apps script 仅获取Google Suite用户列表中自定义字段的值,google-apps-script,google-admin-sdk,Google Apps Script,Google Admin Sdk,我在谷歌套件中的用户中创建了自定义字段。 类别:福雷萨特 其中: 名称:“forestat epost”,类型:email,编号:多个值 我想用谷歌脚本列出这些值。我用了这个: 要编写此代码: function listUsers() { var optionalArgs = { customer: 'my_customer', maxResults: 10, orderBy: 'email', projection: 'custom', custo

我在谷歌套件中的用户中创建了自定义字段。 类别:福雷萨特 其中: 名称:“forestat epost”,类型:email,编号:多个值

我想用谷歌脚本列出这些值。我用了这个:

要编写此代码:

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.');
  }
}
我想要的是:xx@xx.no, xy@xx.no, yy@xx.no

我试过几种方法,但我恐怕经验不足

var epost = foresatt.foresatt_epost;
结果:TypeError:无法读取属性“ForeAtt_epost”

var epost = foresatt('foresatt_epost');
结果:TypeError:forestat不是函数


请告诉我,如何仅获取“Forestat epost”字段的值?

我相信您的目标如下

  • 您想要检索
    xx@xx.no, xy@xx.no, yy@xx.no
    来自以下对象:
在这种情况下,可以从
object.foreatt.foreatt_epost
数组中检索值

示例脚本:
  • 如果上面的对象是
    user.customSchemas
    ,则脚本如下所示
  • 如果要以逗号分隔的字符串形式检索值,可以使用
    res.join(“,”)
参考资料:
注意
如果不能保证您的属性将存在于您的
对象中
,您可以执行
(object.property |[]).map(…)
,而不是
object.property.map(…)
,以避免出现错误
未捕获类型错误:无法读取未定义的属性“forEach”
,非常感谢!你让我阅读了数组(也是嵌套数组)、对象等,所以我加入了一个检查,看看“foreatt”是什么类型。我尝试了您的代码,但出现了一个错误,然后我意识到–对于自定义字段为空的情况,我需要一个if语句。由于if,我不得不将const改为var。我的代码现在在if users之后,对于I:var user=users[I];var forestat=user.customSchemas//var type=类型化(forestat);if(foreatt==null){var lengde=0;var epost=“”;}else{var lengde=Object.keys(foreatt.length;var epost=foreatt.foreatt.foreatt.foreatt_epost.map(e=>e.value);}Logger.log(“%s(%s)”,user.primaryEmail,user.name.fullName,epost)//foresatt,object,matrise[0]@Ingeborg I在回答中添加了一个修改,以确定属性可能不存在的地址时间。看一下结尾的便条,看看它是否对你有用。干杯@泽克托尔感谢您的支持。我没注意到对方的答复。我为此道歉。我认为这对OP很有用。
var epost = foresatt('foresatt_epost');
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"},
    ]
  }
}
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' ]
var foresatt = user.customSchemas;
const res = foresatt.Foresatt.foresatt_epost.map(e => e.value);
console.log(res)