在运行谷歌脚本以从 AD 获取用户数据后,如何在我的谷歌表中显示“类型”和“值”?

时间:2021-03-04 22:02:17

标签: javascript google-apps-script google-sheets active-directory google-sheets-api

我是 Javascript 新手,我目前正在尝试创建一个谷歌表,列出 AD 组中的所有用户 + 他们的电话号码。然而,当我在下面运行这个脚本时,应该有电话号码的单元格也有,“类型=工作,值=(000)123-4567。我只想显示电话号码本身。怎么会我解决了这个问题?我确定我错过了一些简单的东西

function writeToSpreadsheet(){
var values = [];
var users = AdminDirectory.Users.list({domain:'companydomain.com'}).users; 
for (var i=0; i<users.length; i++){
  values.push([users[i].name.fullName, users[i].phones]); 

var spreadsheetUrl = 'https://docs.userinfospreadsheet';
SpreadsheetApp.openByUrl(spreadsheetUrl).getSheets()[0].getRange(1, 1, values.length, values[0].length).setValues(values)

我使用本指南作为参考https://sites.google.com/site/scriptsexamples/home/announcements/listingdomainusernamesinaspreadsheet

2 个答案:

答案 0 :(得分:1)

As the documentations states, function access(arr, indexes) { while (indexes.length > 0) { arr = arr[indexes[0]]; indexes = indexes.slice(1); } return arr; } const arr = [[[[[123, 234]]]], [[],[],[[],[],[],[[],[],[],[],[0,0,0,0,0,987]]]]]; console.log(access(arr, [0,0,0,0,0])); console.log(access(arr, [0,0,0,0,1])); console.log(access(arr, [1,2,3,4,5])); 是一个对象数组。处理它们的最简单方法是使用将它们转换为字符串的函数:

phones

这将以以下形式列出电话:

function generatePhonesCell(phones) {
  return phones
    .map(phone => {
      const value = phone.value
      const type = phone.type.replaceAll('_', ' ')
      return `${value} (${type})`
    })
    .join('\n')
}

您只需要将它们添加到您现有的代码中:

(000)123-4567 (home)
(000)765-4321 (work)

答案 1 :(得分:0)

我认为用户的手机属性不是字符串,而是一个对象或列表。 为了获得电话号码的好列表,您必须将推送到值数组的 users[i].phones 替换为函数调用 getPhones(users[i].phones) 这个函数应该是这样的:

如果用户手机是对象数组 [{type: 'work', value: '(000)123-4567'}]

function getPhones(arr) {
    return arr.map(function(phoneObj) {
        return phoneObj.value;
    }).join(', ')
}

或者如果它只是一个对象 replce users[i].phones with users[i].phones.value