从 Google 目录 API 获取主 phone 号码到 Google 电子表格

Getting primary phone number from Google Directory API to Google Spreadsheet

我想通过目录 API 将我们 Google Apps for Work 用户的一些用户数据添加到 Google 电子表格中。我使用以下 Google Apps 脚本并且目前有效:

function writeToSpreadsheet(){
      var values = [];
      var optionalArgs = {
        customer: 'my_customer',
        maxResults: 500,
        orderBy: 'email',
        viewType: 'domain_public'
      };
      var users = AdminDirectory.Users.list(optionalArgs).users; //example: ignitesynergy.com
      for (var i=0; i<users.length; i++){
        values.push([users[i].id, users[i].name.familyName, users[i].name.givenName, users[i].primaryEmail, users[i].phones ]); //Look in the docs or use auto complete to see what you can access  
      }

      var spreadsheetUrl = 'https://docs.google.com/a/liganova.com/spreadsheets/d/1HwSMiBjW9lAw55GJaTdW_LDUjkLiP473ntuV2DpIeqQ/';
      SpreadsheetApp.openByUrl(spreadsheetUrl).getSheets()[0].getRange(2, 1, values.length, values[0].length).setValues(values);
    }

但是:phone 数字列中的值如下所示:

{type=work, value=+123456789}

我只想要列中的值。当我尝试

users.phones[0].primary

我收到类型错误。

有什么想法吗?

Users.list 返回一个 phone 数字对象数组,而不仅仅是一个普通数字。我可以通过查看您得到的 {type=.., value=..} 符号来判断,{} 表示它是一个 javascript 对象,并且我看到名为 type 和 value 的属性。

您需要遍历返回的 phone 号码对象并使用 If 语句识别主号码。

尝试这样的事情:

  for (var i=0; i<users.length; i++){
    var phone = '';
    for(var j in users[i].phones){
         if(users[i].phones[j].type == 'primary')
            phone = users[i].phones[j].value;
    }
    values.push([users[i].id, users[i].name.familyName, users[i].name.givenName, users[i].primaryEmail, phone ]); //Look in the docs or use auto complete to see what you can access  
  }

卡梅伦的回答太棒了!但是,"type" 应设置为不同的值,如 'mobile' 仅显示数字 phone。

https://developers.google.com/admin-sdk/directory/v1/reference/users/update

for (var i=0; i<users.length; i++){
var phone = '';
for(var j in users[i].phones){
     if(users[i].phones[j].type == 'mobile')
        phone = users[i].phones[j].value;
}
values.push([users[i].name.familyName, users[i].name.givenName, users[i].primaryEmail, phone ]);
}