2015-10-27 5 views
0

Я хочу получить некоторые пользовательские данные наших пользователей Google Apps для Work в Google Spreadsheet с помощью API-интерфейса Directory. Я использую следующий Google Apps Script и он работает до сих пор:Получение первичного номера телефона из Google Directory API в таблицу Google

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

Пользователи.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

Awesome, спасибо! :) – 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 ]); 
}