その値に基づいてカスタムフィールドを削除しようとしていますが、テスト中に停止します。現在のコード:
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();
また、Googleコンタクトのカスタムフィールドを処理する方法のサンプルを含む簡単なドキュメントはありますか?追加、削除、値の取得だけでは不可能に思えます。この質問の助けに感謝しますが、簡単なサンプルを見てどこかにガイドを見つけてもかまいません。
インスピレーションとして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);
}
}
}
}