0

我一直在使用配置文件库来检索和更新应用程序脚本中的一些共享联系人。我根本不是专家,并且在以下情况下遇到了一些麻烦:

我总是想为每个元素检索一些特定的“字段”,例如姓名、公司、部门、职位、电子邮件、工作电话、手机。问题是我不知道如何动态地使用它,所以当我检索一个没有值的字段时,我会遇到一个我不想打印在电子表格上的令人不快的“未定义”,我试过尝试/catch,一个 if 语句,用于保证该值在打印之前存在,但没有任何运气。

检索函数如下:

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

我认为通过动态检索此信息将以未定义的问题结束,但我不知道该怎么做,所以任何关于如何做的帮助或建议将不胜感激。

4

1 回答 1

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() :  '';
于 2013-06-29T02:35:29.087 回答