Answer:
虽然中提供了解决方法这个答案 https://stackoverflow.com/a/46355535似乎有效,我认为有一种更有记录的方法来查找 People APIresourceName
基于contactId
.
This contactId
是的一部分人力资源 https://developers.google.com/people/api/rest/v1/people,只要连接来自CONTACTS
.
更具体地说,可以在以下位置找到此信息作为资源的一部分:
{
"resourceName": "people/c...",
"metadata": {
"sources": [
{
"type": "CONTACT",
"id": "CONTACT_ID" // Converting to decimal and adding "people/c" results in resource name
}
]
}
}
因此,如果你有一个有效的数组contactId
,就可以找到对应的resourceNames
列出您的联系(请参阅people.connections.list https://developers.google.com/people/api/rest/v1/people.connections/list)并检查是否contactId
匹配id
在嵌套字段中并检索resourceName
对于该连接(如果是这种情况)。
代码示例:
例如,使用 Apps 脚本,您可以检索以下映射:contactId
and resourceName
, 像这样:
function getResourceNamesFromContactIds(contactIds) { // contactIds: array with valid contactIds
const resourceName = "people/me";
const optionalArgs = {
personFields: "metadata",
sources: "READ_SOURCE_TYPE_CONTACT"
}
const connections = People.People.Connections.list(resourceName, optionalArgs)["connections"];
const mapping = contactIds.map(contactId => {
const foundConnection = connections.find(connection => {
return contactId == connection["metadata"]["sources"][0]["id"];
});
if (foundConnection) {
return {
contactId: contactId,
resourceName: foundConnection["resourceName"]
}
}
}).filter(el => el);
return mapping;
}