是否可以通过联系人组ID查询和过滤Google People API连接? 问题:提交功能请求:解决方法:

问题描述

我正在使用Google People API填充仪表板的通讯簿。我有很多联系人,因此我们的想法是通过为此服务创建一个特定的组来过滤联系人。我基本上需要的是查询所有在特定组ID上过滤的连接的可能性。官方API似乎只有“列表”方法,没有机会进行查询。我将客户端库用于node.js,这是我的代码

const {google} = require('googleapis');

const getGoogleConnections = async (userToken) => {
  const oauth2client = new google.auth.OAuth2;
  oauth2client.setCredentials({
    'access_token': userToken,//Passport session user
  });

  const googlePeople = await google.people({
    version: 'v1',auth: oauth2client,});

  const params = {
    resourceName: 'people/me',pageSize: 200,sortOrder: 'LAST_MODIFIED_DESCENDING',personFields: ['names','emailAddresses','memberships','organizations'],};

  const connections = await googlePeople.people.connections.list(params);
  return connections;
};

我的答复:

"connections": [
            {
                ... //returning all specified personFieldsValues 
                "memberships": [
                    {
                        "Metadata": {
                            "source": {
                                "type": "CONTACT","id": "id value"
                            }
                        },"contactGroupMembership": {
                            "contactGroupId": "contact group id","contactGroupResourceName": "contactGroups/contact group id"
                        }
                    },{
                        "Metadata": {
                            "source": {
                                "type": "CONTACT","id": "Metadata id "
                            }
                        },"contactGroupMembership": {
                            "contactGroupId": "myContacts","contactGroupResourceName": "contactGroups/myContacts"
                        }
                    }
                ]
            }
        ],

我的回答是正确的,API返回了所有值,但是我找不到在联系人组ID上过滤这些返回值的方法。有人尝试过吗?

解决方法

问题:

如评论by Tanaike中所述,调用people.connections.list时无法过滤返回的连接(与Google API的其他list方法不同,没有可选的查询参数或类似参数) )。

提交功能请求:

如果您认为此功能可能有用,建议您在问题跟踪工具的People component上请求此功能。

解决方法:

同时,您可以做的是在API返回连接后过滤连接。您可以使用filtersome按照以下方式根据组ID过滤它们:

const connections = await googlePeople.people.connections.list(params); 
const filteredConnections = connections.connections.filter(connection => {
  return connection.memberships.some(membership => {
    if (membership.contactGroupMembership) {
      return membership.contactGroupMembership.contactGroupId === "YOUR_GROUP_ID";
    } else return false;
  });
});