问题描述
我正在使用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返回连接后过滤连接。您可以使用filter和some按照以下方式根据组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;
});
});