Edit:Google формирует onFormSubmit (при редактировании) вызывает дубликатами
Вот исполнение транскрипт, редактирования существующей контактной формы (я не вижу ничего, исключив любую существующую связь ??).
[14-01-21 13:39:03:306 EST] Starting execution
[14-01-21 13:39:03:311 EST] FormResponse.getItemResponses() [0.001 seconds]
[14-01-21 13:39:03:311 EST] (class).getResponse() [0 seconds]
[14-01-21 13:39:03:312 EST] (class).getResponse() [0 seconds]
[14-01-21 13:39:03:312 EST] (class).getResponse() [0 seconds]
[14-01-21 13:39:03:312 EST] (class).getResponse() [0 seconds]
[14-01-21 13:39:03:312 EST] (class).getResponse() [0 seconds]
[14-01-21 13:39:03:312 EST] (class).getResponse() [0 seconds]
[14-01-21 13:39:03:312 EST] (class).getResponse() [0 seconds]
[14-01-21 13:39:03:312 EST] (class).getResponse() [0 seconds]
[14-01-21 13:39:03:456 EST] ContactsApp.getContactGroup([System Group: My Contacts]) [0.143 seconds]
[14-01-21 13:39:04:634 EST] ContactGroup.getContacts() [1.178 seconds]
[14-01-21 13:39:04:637 EST] Contact.getEmails([WORK_EMAIL]) [0 seconds]
[14-01-21 13:39:04:637 EST] EmailField.toString() [0 seconds]
[14-01-21 13:39:04:718 EST] ContactsApp.createContact([JOTTER, BOT, [email protected]]) [0.08 seconds]
[14-01-21 13:39:04:719 EST] Contact.getEmails([HOME_EMAIL]) [0 seconds]
[14-01-21 13:39:04:802 EST] EmailField.setLabel([WORK_EMAIL]) [0.082 seconds]
[14-01-21 13:39:04:877 EST] EmailField.setAsPrimary() [0.074 seconds]
[14-01-21 13:39:04:959 EST] Contact.addPhone([MOBILE_PHONE, 12345]) [0.081 seconds]
[14-01-21 13:39:05:168 EST] Contact.addPhone([WORK_PHONE, 67890]) [0.209 seconds]
[14-01-21 13:39:05:252 EST] Contact.addCompany([CompanyInc, BadCoderYep]) [0.083 seconds]
[14-01-21 13:39:05:386 EST] Contact.addAddress([WORK_ADDRESS, 123 Company Place, Suburb, State]) [0.133 seconds]
[14-01-21 13:39:05:625 EST] Contact.addToGroup([ContactGroup]) [0.237 seconds]
[14-01-21 13:39:05:625 EST] Contact.toString() [0 seconds]
[14-01-21 13:39:05:625 EST] ContactGroup.addContact([Contact]) [0.237 seconds]
[14-01-21 13:39:05:625 EST] Contact.getEmails([WORK_EMAIL]) [0 seconds]
[14-01-21 13:39:05:625 EST] EmailField.toString() [0 seconds]
[14-01-21 13:39:05:696 EST] ContactsApp.createContact([JOTTER, BOT, [email protected]]) [0.069 seconds]
[14-01-21 13:39:05:696 EST] Contact.getEmails([HOME_EMAIL]) [0 seconds]
[14-01-21 13:39:05:766 EST] EmailField.setLabel([WORK_EMAIL]) [0.069 seconds]
[14-01-21 13:39:05:823 EST] EmailField.setAsPrimary() [0.056 seconds]
[14-01-21 13:39:05:986 EST] Contact.addPhone([MOBILE_PHONE, 12345]) [0.162 seconds]
[14-01-21 13:39:06:062 EST] Contact.addPhone([WORK_PHONE, 67890]) [0.075 seconds]
[14-01-21 13:39:06:145 EST] Contact.addCompany([CompanyInc, BadCoderYep]) [0.082 seconds]
[14-01-21 13:39:06:236 EST] Contact.addAddress([WORK_ADDRESS, 123 Company Place, Suburb, State]) [0.091 seconds]
[14-01-21 13:39:06:389 EST] Contact.addToGroup([ContactGroup]) [0.152 seconds]
[14-01-21 13:39:06:389 EST] Contact.toString() [0 seconds]
[14-01-21 13:39:06:389 EST] ContactGroup.addContact([Contact]) [0.152 seconds]
[14-01-21 13:39:06:390 EST] Execution succeeded [3.079 seconds total runtime]
Является ли это проблема рекурсии или что-то?
У меня есть форма, которая добавляет контакт непосредственно в мои контакты Gmail - принимая значения из формы.
При первом отправке оно отлично работает, но когда я снова редактирую форму, я получаю 2 x новый контакт с отредактированными деталями и старый контакт остается. При запуске снова добавляется 4 x контакта, затем 8 x контакт и т. Д.
Кажется, глупая ошибка. Что мне здесь не хватает?
function onFormSubmit(e) {
var formResponses = e.response.getItemResponses();
var firstName = formResponses[0].getResponse().toString();
var lastName = formResponses[1].getResponse().toString();
var emailAddress = formResponses[2].getResponse().toString();
var company = formResponses[3].getResponse().toString();
var position = formResponses[4].getResponse().toString();
var mobileNumber = formResponses[5].getResponse().toString();
var workNumber = formResponses[6].getResponse().toString();
var workAddress = formResponses[7].getResponse().toString();
// Get all of our contacts in group "My Contacts".
// Later we will check the submitted values against the existing contacts to avoid duplicates.
var group = ContactsApp.getContactGroup("System Group: My Contacts");
var myContacts = group.getContacts();
// try finding contact first by email address to avoid duplicates.
for (var i = 0; i < myContacts.length; i++) {
if(myContacts[i].getEmails(ContactsApp.Field.WORK_EMAIL)[0] == emailAddress) {
//contact exists so lets update it's values to latest in form submission
//var contact = ContactsApp.getContact(emailAddress).deleteContact();
myContacts[i].deleteContact();
var contact = ContactsApp.createContact(firstName, lastName, emailAddress);
contact.getEmails(ContactsApp.Field.HOME_EMAIL)[0].setLabel(ContactsApp.Field.WORK_EMAIL);
contact.addPhone(ContactsApp.Field.MOBILE_PHONE, mobileNumber);
contact.addPhone(ContactsApp.Field.WORK_PHONE, workNumber);
contact.addCompany(company, position);
contact.addAddress(ContactsApp.Field.WORK_ADDRESS, workAddress);
group.addContact(contact);
} else {
//contact does not yet exist so we will create it from scratch
var contact = ContactsApp.createContact(firstName, lastName, emailAddress);
contact.getEmails(ContactsApp.Field.HOME_EMAIL)[0].setLabel(ContactsApp.Field.WORK_EMAIL);
contact.addPhone(ContactsApp.Field.MOBILE_PHONE, mobileNumber);
contact.addPhone(ContactsApp.Field.WORK_PHONE, workNumber);
contact.addCompany(company, position);
contact.addAddress(ContactsApp.Field.WORK_ADDRESS, workAddress);
// Adding our contact to the "My Contacts" group
group.addContact(contact);
}
}
}
Я думаю, что внутри, если цикл, вы должны удалить текущий контакт, который соответствовал условию. myContacts [I] .deleteContact(); –
Спасибо Amit за ответ! Я внес изменения, но он по-прежнему вызывает дубликаты. Я обновляю страницу, чтобы отразить текущий код. – jotterbot