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, и меня направили сюда. Кажется, это ошибка в Контактах, но я не могу удалить контакт и не знаю, как я получаю эти недействительные контакты.

  • Есть ли способ избавиться от этих недействительных контактов? Как?
  • У кого-нибудь есть понимание, как создаются эти недействительные контакты?

0 ответов

Другие вопросы по тегам