Ошибка при включении контакта в группу с использованием People API

#google-apps-script #google-contacts-api #google-people-api

#google-apps-script #google-contacts-api #google-people-api

Вопрос:

Мне нужно добавить один контакт во все перечисленные ниже группы. Я попытался добавить контакт в группы один за другим, однако, когда я тестировал с первой группой, API выдал ошибку

Исключение GoogleJsonResponseException: ошибка при вызове API для people.contactGroups.members.modify с ошибкой: не удается добавить контакты в устаревшее системное имя ресурса контактной группы «contactGroups / chatBuddies».

Я хочу добавить созданный контакт во все эти группы

  • Группы контактов / chatBuddies
  • Группы контактов / все
  • Группы контактов / друзья
  • Контактные группы/ коллеги
  • Группы контактов / семья
  • Группы контактов / заблокированы

Я нигде не вижу, чтобы эти группы обесценивались

Я пробовал с

 var b = {
    "phoneNumbers": [{
        "type": "mobile",
        "value": "09876543210"
    }],
    "names": [{
        "unstructuredName": "Test account"
    }],
    "urls": [],
    "addresses": [{
        "type": "work",
        "formattedValue": "0"
    }],
    "organizations": [{
        "name": "Organisation"
    }],
    "emailAddresses": [{
        "type": "home",
        "value": "abcd@gmail.com"
    }]
}

function doGet(e) {
    var resource = People.People.createContact(b);
    var id = resource.metadata.sources[0].id;
    var contactResourceName = resource["resourceName"];
    var group = People.ContactGroups.get("contactGroups/friends");
    var groupResourceName = group["resourceName"];
    var membersResource = {
        "resourceNamesToAdd": [
            contactResourceName
        ]
    }
    People.ContactGroups.Members.modify(membersResource, groupResourceName);
    return ContentService.createTextOutput(JSON.stringify(group));
}
  

Ответ №1:

Где было уведомление об устаревании?

Он был выставлен на дисплее в нижней части запертого шкафа для хранения документов, застрявшего в заброшенном туалете, с табличкой на двери «Остерегайтесь леопарда».

Со всей серьезностью, расширенные сервисы представляют собой тонкие слои, обертывающие соответствующие REST API, в данном случае People API, поэтому каждый метод сервиса имеет соответствующий метод, предоставляемый API, в частности contactGroups.members.modify .

Описание метода выглядит следующим образом, четко указывая, что системные группы контактов фактически устарели:

Единственными системными контактными группами, в которые могут быть добавлены участники, являются contactGroups/ MyContacts и contactGroups / starred . Другие системные группы контактов устарели, и в них могут быть удалены только контакты.


Могу ли я обновлять системные группы напрямую через API?

Похоже, это невозможно, поскольку добавление системных групп в контакт при обновлении memberships поля с помощью people.updateContact метода явно запрещено (вы должны изучить ContactGroupMembership документы ресурсов, чтобы найти информацию):

Любое членство в контактной группе может быть удалено, но может быть добавлено только членство в группе пользователей или «MyContacts» или «помеченное» системной группой.