我正在尝试根据其值删除自定义字段,但它在测试中死亡。当前代码:
function testDelete2() {
var contacts = ContactsApp.findContactGroup('test').getContacts();
for (var i in contacts) {
var checkfield = contacts[i].getUserDefinedField('testlabel')
if (checkfield == 'testvalue') {
var customFields = contacts[i].getCustomFields();
customFields.deleteCustomField('testlabel');
}
}
}
我收到此错误:TypeError:在对象 CustomField 中找不到函数 deleteCustomField。
不知道那是什么意思。请帮忙。我一遍又一遍地阅读此页面,但没有任何帮助:https ://developers.google.com/apps-script/service_contacts
我什至尝试了这种不起作用的变体:
customFields.getLabel('testlabel').deleteCustomField();
此外,是否有任何简单的文档与示例有关如何处理谷歌联系人自定义字段?添加,删除,只是获取价值似乎都是不可能的。我很感激这个问题的帮助,但也不介意在某个地方找到一个带有简单示例的指南。
使用 Serge 的出色代码作为灵感,我想出了这个删除代码(将很快添加带有删除/添加的完整代码):
更新:通过取出删除/添加自定义字段并仅更新该自定义字段的值来简化过程(不知道为什么一开始没有尝试,也许我做了但编码错误)
function testUpdateDues() {
var duescos = ContactsApp.findContactGroup('z8 - Assoc').getContacts();
for (var i in duescos) {
var customFields = duescos[i].getCustomFields();
for (var n in customFields) {
if (customFields[n].getLabel() == 'Dues Amount' && customFields[n].getValue() == 'unstated'){
customFields[n].setValue('$ 500');
}
}
}
}
最终编辑允许我添加/编辑基于 google 联系人组分配的任何自定义字段(感谢 Serge 的协助!!)在脚本中使用基于时间的触发器:
function UpdateRegion1() {
UpdateCustomField('Reg 1 - Pan', 'Region' , 'Region 1 - Panhandle');
}
function UpdateCustomField(group, customlabel, customvalue) {
var contacts = ContactsApp.findContactGroup(group).getContacts();
for (var i in contacts) {
var fields = new Array();
var customFields = contacts[i].getCustomFields();
for(var n in customFields) {
fields.push(customFields[n].getLabel());
}
if (fields.indexOf(customlabel)==-1){
contacts[i].addCustomField(customlabel, customvalue);
}
for(var j in customFields) {
if (customFields[j].getLabel() == customlabel && customFields[j].getValue() != customvalue){
customFields[j].setValue(customvalue);
}
}
}
}