我正在尝试删除Google联系人中的所有公司/标题。以下代码删除除一个以外的所有内容。有人可以帮忙吗?
for (var i = 0; i < noComps; i++) {
var cComp = contacts.getCompanies()[i];
var r = cComp.deleteCompanyField();
}
我的contacts
变量和noComps
已经预定义,这里没有概述。
基本上我要做的是在Google表格中直接更新,并将其同步到Google通讯录。我建立了onEdit(e)
功能。
您的代码需要按以下方式构建:
function test() {
var contacts = ContactsApp.getContactsByName('John Doe');
var companies,i,j,L,nmbrOfCompanies,thisCompany;
L = contacts.length;
for (i = 0; i < L; i++) {
companies = contacts[i].getCompanies();
nmbrOfCompanies = companies.length;
for (j = 0; j < nmbrOfCompanies; j++) {
thisCompany = companies[j];
//Logger.log('thisCompany: ' + thisCompany);
thisCompany.deleteCompanyField();
}
}
}
每个联系人可以有多个公司。所以,你需要一个嵌套循环。
你有一个简单的变异+迭代问题:在你的联系公司的循环中,你要求他们的公司。但是,您删除了一个条目,因此下一个调用将跳过下一个公司。相反,您应该向后迭代,并避免重新获取循环中的迭代对象:
var comps = contact.getCompanies();
var i = comps.length;
while (i > 0) {
var comp = comps[--i];
...
comp.deleteCompanyField();
}
另一种方法是使用forEach
数组函数:
contact.getCompanies().forEach(function (comp, i, allTheirCompanies) {
...
comp.deleteCompanyField();
});