API контактов Google App Script не может удалить контакт
Я очищаю свои контакты в GSuite / Workspace Contacts, потому что контакты не отображались в Gmail To: autocomplete list для настольных и мобильных приложений. У меня также были аналогичные проблемы в текстовом приложении, когда я не находил контакты.
Оказывается, что если есть несколько контактов с ОДНИМ адресом электронной почты, это приведет к тому, что автозаполнение не будет отображать / находить контакты (три контакта с двумя контактами только с адресом электронной почты, а другой с полным именем и адресом электронной почты) .
Автозаполнение Gmail
<img alt="Автозаполнение Gmail" src="https://i.stack.imgur.com/nk8Rl.png"/>
У меня ~3200 контактов, некоторые из них
- повторяющиеся контакты с похожей контактной информацией
- дубликаты контактов только с адресом электронной почты
- контакты без контактной информации (без имени, без адреса электронной почты, без телефона)
Причиной большинства дублирования является
"Create contacts for auto-complete"
функция в Gmail. Его нужно установить на
"I'll add contacts myself"
чтобы не вызывать дублирования.
<img alt="Сам добавляю контакты" src="https://i.stack.imgur.com/DLoCe.png"/>
Я попробовал функцию «Объединить и исправить» в Контактах, но она не нашла все контакты, которые нужно было объединить. Итак, я создаю скрипт Google Apps, чтобы исправить повторяющиеся контакты.
Но я столкнулся с проблемами примерно с 200 контактами, из-за которых мой скрипт не работал . Я попытался изменить метку и удалить контакт, но сервер не работает с
Error We're sorry, a server error occurred. Please wait a bit and try again.
Когда я пытаюсь получить доступ к идентификатору, имени, электронной почте и т. Д., Я получаю другую ошибку от сервера. Вот образец
Error: Could not locate target object while calling method getId on object with id 979
Error: Could not locate target object while calling method getFamilyName on object with id 1344
Error: Could not locate target object while calling method getEmails on object with id 3279
Вот мой сценарий, который просто перебирает все контакты для каждой группы:
function main() {
const allGroups = ContactsApp.getContactGroups()
let counter = 0
allGroups.forEach(group => {
const contacts = group.getContacts()
Logger.log('=====================\n' + group.getGroupName() + ' ' + contacts.length)
contacts.forEach((contact, index) => {
try {
// After trying to execute a method on a contact, an error is generated
// contact.getEmails()
// contact.getId()
contact.getFamilyName()
} catch(err) {
Logger.log(index + ' ' + err)
/*
deleteContact fails with
"We're sorry, a server error occurred. Please wait a bit and try again."
ContactsApp.deleteContact(contact)
*/
counter++
}
})
})
Logger.log('Total count: ' + counter)
}
Вызов метода при контакте
11:38:53 PM Info =====================
System Group: Family 0
11:38:53 PM Info =====================
System Group: Friends 0
11:38:56 PM Info =====================
System Group: My Contacts 3280
11:38:56 PM Info 233 Error: Could not locate target object while calling method getFamilyName on object with id 1344.
11:38:56 PM Info 234 Error: Could not locate target object while calling method getFamilyName on object with id 1345.
11:38:56 PM Info 243 Error: Could not locate target object while calling method getFamilyName on object with id 1346.
11:38:56 PM Info 244 Error: Could not locate target object while calling method getFamilyName on object with id 1347.
11:38:56 PM Info 304 Error: Could not locate target object while calling method getFamilyName on object with id 1348.
11:38:56 PM Info 308 Error: Could not locate target object while calling method getFamilyName on object with id 1349.
11:38:56 PM Info 311 Error: Could not locate target object while calling method getFamilyName on object with id 1350.
11:38:56 PM Info 313 Error: Could not locate target object while calling method getFamilyName on object with id 1351.
11:38:56 PM Info 316 Error: Could not locate target object while calling method getFamilyName on object with id 1352.
Попытка удалить контакт
11:48:15 PM Notice Execution started
11:48:15 PM Info =====================
~Error 0
11:48:16 PM Info =====================
~On Hold 502
11:48:17 PM Info =====================
Intake Form 781
11:48:17 PM Info =====================
Intake Form Received 211
11:48:18 PM Info =====================
Salesforce Sync 0
11:48:18 PM Info =====================
Starred in Android 12
11:48:18 PM Info =====================
System Group: Coworkers 0
11:48:18 PM Info =====================
System Group: Family 0
11:48:18 PM Info =====================
System Group: Friends 0
11:48:21 PM Info =====================
System Group: My Contacts 3280
11:48:21 PM Info 634 Error: Could not locate target object while calling method getFamilyName on object with id 1526.
11:48:21 PM Info Trying to delete user
11:48:21 PM Error
We're sorry, a server error occurred. Please wait a bit and try again.
Снимок экрана отладки скрипта
<img alt="Информация об отладке" src="https://i.stack.imgur.com/b8U2R.png"/>
Я связался со службой поддержки GSuite / Workspace, и меня направили сюда. Кажется, это ошибка в Контактах, но я не могу удалить контакт и не знаю, как я получаю эти недействительные контакты.
- Есть ли способ избавиться от этих недействительных контактов? Как?
- У кого-нибудь есть понимание, как создаются эти недействительные контакты?