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

Google Apps Script快速删除全部联系人:解决People API超时问题

解决Google Apps Script批量删除联系人超时问题

问题背景

现有约1500个Google联系人,使用People API单条删除时,6分钟仅删除250个就触发执行超时。需要实现批量获取所有联系人resourceName,并按500个一组批量删除,完成每日清空联系人后从CSV重新导入的需求。

关键优化点

  • 完整获取所有联系人:People.Connections.list接口默认分页返回结果,需通过nextPageToken循环获取全部联系人的resourceName
  • 批量删除接口复用:使用People.People.batchDeleteContacts接口,单次最多可删除500个联系人,大幅提升效率
  • 超时规避:拆分任务为多个小批量操作,避免单次执行时间超过Google Apps Script的6分钟限制

完整实现代码

// 主函数:清空所有联系人
function deleteAllContacts() {
  // 1. 获取所有联系人的resourceName
  const allResourceNames = getAllContactResourceNames();
  if (allResourceNames.length === 0) {
    console.log("没有可删除的联系人");
    return;
  }

  // 2. 按500个一组拆分,批量删除
  const batchSize = 500;
  for (let i = 0; i < allResourceNames.length; i += batchSize) {
    const batch = allResourceNames.slice(i, i + batchSize);
    deleteContactBatch(batch);
    // 每次批量操作后短暂延迟,避免API调用过于频繁
    Utilities.sleep(1000);
  }
  console.log(`已成功删除 ${allResourceNames.length} 个联系人`);
}

// 获取所有联系人的resourceName(处理分页)
function getAllContactResourceNames() {
  let resourceNames = [];
  let pageToken = null;

  do {
    const options = {
      personFields: "names", // 必须指定至少一个person字段,这里选names即可
      pageToken: pageToken,
      pageSize: 1000 // 单次请求最大返回1000条,提升获取效率
    };
    const response = People.People.Connections.list("people/me", options);
    
    if (response.connections) {
      resourceNames = resourceNames.concat(response.connections.map(conn => conn.resourceName));
    }
    pageToken = response.nextPageToken;
  } while (pageToken);

  return resourceNames;
}

// 批量删除一组联系人
function deleteContactBatch(resourceNames) {
  try {
    const requestBody = { resourceNames: resourceNames };
    People.People.batchDeleteContacts(requestBody);
    console.log(`已删除 ${resourceNames.length} 个联系人`);
  } catch (err) {
    console.log(`批量删除失败:${err.message}`);
  }
}

使用说明

  • 确保已在Google Apps Script编辑器中启用People API:依次点击「资源」→「高级Google服务」,找到People API并启用
  • 首次运行会触发权限授权,需按照提示完成授权流程
  • 若联系人数量极大(超过5000),可考虑将主逻辑拆分为多个小函数,通过时间驱动触发器分阶段执行,彻底避免超时

内容的提问来源于stack exchange,提问作者Thomas Guggler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:00:33