我一直在使用“个人资料库”来检索和更新应用脚本中的某些共享联系人。我根本不是专家,我在以下情况下遇到了一些麻烦:
我总是希望为每个元素检索一些特定的“字段”,例如姓名,公司,部门,职位,电子邮件,工作电话,手机。问题是我不知道如何动态,所以当我检索一个没有价值的字段时,我不想在电子表格上打印出令人不快的“未定义”,我试过尝试/ 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);
}
我认为通过动态检索此信息将以未定义的问题结束,但我不知道该怎么做,因此非常感谢任何有关如何操作的帮助或建议。
答案 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() : '';