Google Scripts调用People API未返回已删除联系人问题咨询
问题排查与修复方案
核心原因
你调用People API时未开启已删除联系人返回开关,且可能存在历史syncToken不兼容的问题。
修复步骤
- 第一步:在
People.People.Connections.list的请求参数中添加showDeleted: true配置,该参数默认值为false,会自动过滤已删除的联系人,开启后才会返回携带metadata.deleted = true标识的已删除条目。 - 第二步:若你当前使用的
syncToken是未开启showDeleted参数时生成的,需要先清空本地存储的旧syncToken,先执行一次不带syncToken的全量同步,获取返回结果中的nextSyncToken作为新的同步凭证,后续增量同步时同时携带新syncToken和showDeleted: true即可正常拉取到删除记录。 - 补充注意:已删除的联系人仅会在回收站保留30天,超过期限的永久删除联系人不会再通过API返回。
修正后代码示例
function getUpdatedContacts() { var connections = People.People.Connections.list('people/me', { sortOrder: 'LAST_MODIFIED_DESCENDING', pageToken: pageToken, // 已提前声明 syncToken: syncToken, // 首次全量同步时可先注释该参数,拿到新syncToken后再开启 pageSize: 1000, showDeleted: true, // 新增该参数开启返回已删除联系人 personFields: 'addresses,biographies,birthdays,calendarUrls,clientData,emailAddresses,events,externalIds,genders,imClients,interests,locales,locations,memberships,metadata,miscKeywords,names,nicknames,occupations,organizations,phoneNumbers,relations,sipAddresses,urls,userDefined' }) return connections; }
内容的提问来源于stack exchange,提问作者user7355976
相关产品推荐
相关产品推荐

