【问题标题】:Getting primary phone number from Google Directory API to Google Spreadsheet从 Google Directory API 获取主要电话号码到 Google 电子表格
【发布时间】:2015-10-27 10:27:59
【问题描述】:

我想通过 Directory 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);
    }

但是:电话号码列中的值如下所示:

{type=work, value=+123456789}

我只想在列中有值。当我尝试

users.phones[0].primary

我得到一个类型错误。

有什么想法吗?

【问题讨论】:

    标签: google-apps-script google-directory-api


    【解决方案1】:

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

    您需要遍历返回的电话号码对象并使用 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  
      }
    

    【讨论】:

      【解决方案2】:

      卡梅伦的回答很棒!但是,“类型”应设置为不同的值,例如“移动”以仅显示数字电话。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-23
        • 2015-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-18
        相关资源
        最近更新 更多