Google Apps Script:People API仅获取少量联系人,如何获取全部?
解决People API仅获取部分联系人的问题
People API默认仅返回最多100条联系人,且默认只包含已正式添加的联系人条目,这就是你只能获取少量联系人的核心原因。要获取全部联系人,需要处理分页逻辑并添加特定参数:
关键调整点
- 添加
includeOtherContacts: true参数:获取所有类型的联系人(包括未正式添加的邮件关联联系人) - 设置
pageSize为最大值200:减少分页请求次数 - 循环处理
pageToken:迭代获取所有分页结果,避免遗漏
修改后的完整代码
function getContactByEmail(targetEmail) { try { let allConnections = []; let pageToken = null; do { const response = People.People.Connections.list('people/me', { personFields: 'names,emailAddresses', includeOtherContacts: true, // 包含全量联系人类型 pageSize: 200, // 单页最大返回数 pageToken: pageToken }); if (response.connections) { allConnections = [...allConnections, ...response.connections]; } pageToken = response.nextPageToken; } while (pageToken); // 查找目标邮箱对应的联系人 const contact = allConnections.find(connection => { const emailAddresses = connection.emailAddresses; return emailAddresses && emailAddresses.length > 0 && emailAddresses.some(emailAddr => emailAddr.value === targetEmail); }); console.log('所有联系人数量: %s', allConnections.length); console.log('匹配的联系人: %s', JSON.stringify(contact, null, 2)); } catch (err) { console.log('获取联系人失败: %s', err.message); } }
额外说明
includeOtherContacts参数会返回Google识别的所有关联联系人,包括你通过邮件往来但未手动添加的对象- 若仍有部分联系人未返回,检查是否有联系人被归档或标记为垃圾,这类联系人API无法获取
内容的提问来源于stack exchange,提问作者Stefano Lista
相关产品推荐
相关产品推荐

