我收到以下错误,想知道如何正确重写此代码。
ReferenceError:函数函数getLabel(){/ * * /}不能用作赋值的左侧或作为++或 - 运算符的操作数。 (第61行,文件" DLContactsToSheet")
var Phones = "";
for ( var g=0;g<contacts[i].getPhones().length;g++)
{
if (contacts[i].getPhones()[g].getLabel() = "MOBILE_PHONE") {
Phones += "C: "
} else if (contacts[i].getPhones()[g].getLabel() = "WORK_PHONE") {
Phones += "W: "
} else if (contacts[i].getPhones()[g].getLabel() = "HOME_PHONE") {
Phones += "H: "
} else {
Phones += "O: "
}
Phones += contacts[i].getPhones()[g].getPhoneNumber();
Phones += "\n";
}
try{ContactArray.push(Phones);}
catch(e){ContactArray.push("N/A")}
答案 0 :(得分:2)
在您的条件中,参考错误似乎是由'='而不是'=='引起的。
将条件重写为if (phone.getLabel() == 'MOBILE_PHONE') { /* ... */ }
等应该可以解决问题。
答案 1 :(得分:1)
你需要对它们进行硬编码才能获取它们。
function fieldType() {
var contacts = ContactsApp.getContacts(), phones = [];
for(var i = 0, iLen = contacts.length; i < iLen; i++) {
var con = contacts[i], f = ContactsApp.Field;
var c = con.getPhones(f.MOBILE_PHONE), w = con.getPhones(f.HOME_PHONE), h = con.getPhones(f.WORK_PHONE);
phones = getNumber(phones, c, "C: ");
phones = getNumber(phones, w, "W: ");
phones = getNumber(phones, h, "H: ");
}
}
function getNumber(phones, type, prefix) {
var typeNumbers = [];
var pNumber = type.length > 0 ? type.map( function (d) { return prefix + d.getPhoneNumber() + "\n"; }) : null;
if(pNumber) {
typeNumbers.push(pNumber);
}
return phones.concat(typeNumbers);
}
有关详细信息,请参阅方法说明: getPhoneNumber()
答案 2 :(得分:0)
您应该在任何条件语句之前将每次迭代的值存储在变量中。 case-switch语句可能也更适合这种情况。
for ( var g=0;g<contacts[i].getPhones().length;g++)
{
var phone_type = contacts[i].getPhones()[g].getLabel()
switch(phone_type) {
case "MOBILE_PHONE":
Phones += "C: "
break;
case "WORK_PHONE":
Phones += "W: "
break;
case "HOME_PHONE":
Phones += "H: "
break;
default:
Phones += "O: "
}
Phones += contacts[i].getPhones()[g].getPhoneNumber();
Phones += "\n";
}