2013-06-29 50 views
0

我一直在使用「個人檔案庫」來檢索和更新apps腳本中的某些共享聯繫人。我不是專家,我在以下場景遇到了一些問題:在Apps腳本中使用ProfilesApp庫檢索信息

我一直想爲每個元素檢索一些特定的「字段」,例如姓名,公司,部門,職位,電子郵件,工作電話,手機。問題是,我不知道如何動態地使用它,所以當我檢索一個沒有價值的字段時,我得到了一個令人不愉快的「未定義」,我不想在電子表格上打印,我試過嘗試/ catch,if語句確保在打印之前存在該值,但沒有任何運氣。

的retreiving功能如下:

function listAllProfiles() { 
var profiles = null; 
var token = null; 
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
do { 
    var result = ProfilesApp.getProfilesForPaging(token); 
    profiles = result.getProfiles(); 
    token = result.getToken(); 
    for (var i = 0; i < profiles.length; i++) { 
    var workEmail, workPhone, mobilePhone, noEmpleado; 
    var emails = profiles[i].getEmails(ContactsApp.Field.WORK_EMAIL); 
    var workPhones = profiles[i].getPhones(ContactsApp.Field.WORK_PHONE); 
    var mobilePhones = profiles[i].getPhones(ContactsApp.Field.MOBILE_PHONE); 
    var custom = profiles[i].getCustomFields(ContactsApp.Field.NUMERO_DE_EMPLEADO);  

    for (var j in emails) { workEmail = emails[0].getAddress(); } 
    for (var k in workPhones) { workPhone = workPhones[k].getPhoneNumber(); } 
    for (var l in mobilePhones) 
    { if (mobilePhones[l].getPhoneNumber() != undefined) { //this is not working 
     mobilePhone = mobilePhones[l].getPhoneNumber(); } else { 
     Logger.log("does not exist"); 
    } 
    } 
    for (var m in custom) { noEmpleado = custom[m].getValue(); } 


// Sólo imprime usuarios reales dados de alta 
     if (workEmail != "[email protected]") { 
     if(workEmail != "[email protected]"){ 
      sheet.appendRow([profiles[i].getFullName(),profiles[i].getCompanyName(),profiles[i].getDepartment(),profiles[i].getJobTitle(),workEmail, 
          profiles[i].getOfficeLocation(),workPhone,mobilePhone,noEmpleado]); 
     } 
     } 
    } 
    } while (token != null); 
} 

我認爲,通過檢索這些信息動態地將與不確定的問題結束,但我不知道該怎麼辦,所以如何任何幫助或建議要做到這一點將不勝感激。

+0

做任何職位回答你的問題?如果是這樣,請使用「打勾」選項將該響應標記爲答案。如果沒有,你應該編輯你的問題並澄清它,這樣人們就有機會給你一個更好的答案。 –

回答

0

所以我認爲你想處理沒有數據保存的情況。以下是適用於任何類似場景的工作電話號碼的單線示例。它的工作原理是這樣的:如果getPhones(...)返回一個或多個PhoneFields,則將第一個電話號碼分配給變量workPhoneNumber,否則分配一個空字符串。

//gets first work phone number from a ProfilesApp Profile 
var workPhoneNumber = profile.getPhones(ContactsApp.Field.WORK_PHONE).length > 
    0 ? profile.getPhones(ContactsApp.Field.WORK_PHONE)[0].getPhoneNumber() : '';