Profiles Library を使用して、apps スクリプトでいくつかの共有連絡先を取得および更新しています。私はまったく専門家ではなく、次のシナリオで問題が発生しています。
名前、会社、部署、役職、電子メール、職場の電話、携帯電話など、各要素の特定の「フィールド」を常に取得したいと考えています。問題は、それを動的に行う方法がわからないことです。そのため、値のないフィールドを取得すると、スプレッドシートに出力したくない不快な「未定義」が表示され、試してみました/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);
}
この情報を動的に取得すると、未定義の問題で終わると思いますが、その方法がわからないので、その方法に関するヘルプや推奨事項は大歓迎です。