使用Apps脚本中的ProfilesApp库检索信息

时间:2013-06-29 00:58:26

标签: google-apps-script

我一直在使用“个人资料库”来检索和更新应用脚本中的某些共享联系人。我根本不是专家,我在以下情况下遇到了一些麻烦:

我总是希望为每个元素检索一些特定的“字段”,例如姓名,公司,部门,职位,电子邮件,工作电话,手机。问题是我不知道如何动态,所以当我检索一个没有价值的字段时,我不想在电子表格上打印出令人不快的“未定义”,我试过尝试/ 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 != ".@nchezg.com") { 
        if(workEmail != "secure-data-connector-user@nchezg.com"){ 
             sheet.appendRow([profiles[i].getFullName(),profiles[i].getCompanyName(),profiles[i].getDepartment(),profiles[i].getJobTitle(),workEmail,
                           profiles[i].getOfficeLocation(),workPhone,mobilePhone,noEmpleado]);
        }
      }
    }
  } while (token != null);
}

我认为通过动态检索此信息将以未定义的问题结束,但我不知道该怎么做,因此非常感谢任何有关如何操作的帮助或建议。

1 个答案:

答案 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() :  '';