2015-10-27 57 views
0

我想通過Directory API將我們Google Apps for Work用戶的一些用戶數據獲取到Google Spreadsheet。我用下面的谷歌Apps腳本,它到目前爲止的工作:從Google Directory API獲取主要電話號碼至Google Spreadsheet

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 

我得到一個TypeError。

任何想法的人?

回答

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 
    } 
+0

真棒,謝謝! :) – bastians

0

卡梅隆的回答太棒了!但是,「類型」應設置爲不同的值,例如「移動」才能顯示數字電話。

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