You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

People API的Connections.list()返回数组长度与totalItems不匹配问题

Google People API 获取联系人不全的问题解决

问题原因

Google People API 的 People.People.Connections.list() 方法默认采用分页机制,单次请求最多返回100条联系人数据,这是API的内置限制。所以你看到totalItems显示总共有155条,但首次请求只能拿到前100条,剩余数据需要通过分页参数获取。

解决方案

通过分页参数pageToken实现循环请求,每次请求携带上一次返回的nextPageToken,直到没有更多数据为止,最后合并所有返回的联系人数据。

修改后的完整代码:

function getAllConnections() {
  try {
    let allConnections = [];
    let pageToken = null;
    
    do {
      // 每次请求携带pageToken,首次请求为null
      const response = People.People.Connections.list('people/me', {
        personFields: 'names',
        pageToken: pageToken
      });
      
      // 将当前页的联系人合并到总数组
      if (response.connections) {
        allConnections = [...allConnections, ...response.connections];
      }
      
      // 更新pageToken为下一页的标识,没有则为null,循环结束
      pageToken = response.nextPageToken;
      
    } while (pageToken);
    
    // 打印总条数和实际获取到的联系人数量
    Logger.log(`totalItems: ${allConnections.length}`);
    Logger.log(`length of allConnections: ${allConnections.length}`);
    
    // 遍历输出所有联系人姓名
    allConnections.forEach((contact, index) => {
      if (contact?.names) {
        Logger.log(`${index} ${contact.names[0].displayName}`);
      } else {
        Logger.log(`${index} 该联系人数据异常`);
      }
    });
    
  } catch (err) {
    Logger.log('获取联系人失败,错误信息:%s', err.message);
  }
}

代码说明

  • 初始化allConnections数组用于存储所有联系人数据
  • 使用do-while循环发起请求:首次请求不带pageToken,后续请求携带上一次返回的nextPageToken
  • 每次请求后将当前页的connections合并到总数组
  • 当nextPageToken为null时,说明已获取全部数据,退出循环
  • 最后遍历总数组输出所有联系人信息

内容的提问来源于stack exchange,提问作者Robert M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 06:33:19