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

请求修改Google Apps Script实现Pipedrive企业与联系人去重创建

完整修改后的Google Apps Script代码(含企业+联系人去重)

修改说明

  • 新增联系人存在性校验:通过邮箱/手机号匹配Pipedrive中已关联目标企业的联系人,避免重复创建
  • 优化API请求逻辑,减少无效调用
  • 细化日志输出,明确操作结果
function createPipedriveEntity() {
  // 配置信息,替换为你自己的内容
  var sheetId = 'My sheet Id'; // 替换为你的Google Sheet ID
  var sheetName = 'Sheet name'; // 替换为你的工作表名称
  var apiToken = "INSERT_YOUR_API_TOKEN_HERE"; // 替换为你的Pipedrive API令牌

  var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName);
  var last_row = sheet.getLastRow();

  // 遍历表格行(从第2行开始,跳过表头)
  for (var row = 2; row <= last_row; row++) {
    // 从表格获取数据并去除首尾空格
    var company_name = sheet.getRange('AT' + row).getValue().trim();
    var person_name = sheet.getRange('X' + row).getValue().trim();
    var person_email = sheet.getRange('N' + row).getValue().trim();
    var person_phone = sheet.getRange('FQ' + row).getValue().trim();

    // 跳过空数据行
    if (!company_name || !person_name) {
      Logger.log("第" + row + "行数据为空,跳过");
      continue;
    }

    var company_id = null;

    // 1. 检查企业是否存在于Pipedrive
    var organizationsUrl = "https://api.pipedrive.com/v1/organizations/find?term=" + encodeURIComponent(company_name) + "&api_token=" + apiToken;
    var organizationsResponse = UrlFetchApp.fetch(organizationsUrl);
    var organizations = JSON.parse(organizationsResponse.getContentText()).data;
    
    if (organizations && organizations.length > 0) {
      company_id = organizations[0].id;
      Logger.log("第" + row + "行:企业已存在 - " + company_name + " (ID: " + company_id + ")");
    } else {
      // 企业不存在则创建
      var createCompanyUrl = "https://api.pipedrive.com/v1/organizations?api_token=" + apiToken;
      var companyPayload = {
        "name": company_name
      };
      var companyOptions = {
        "method": "post",
        "contentType": "application/json",
        "payload": JSON.stringify(companyPayload)
      };
      var companyResponse = UrlFetchApp.fetch(createCompanyUrl, companyOptions);
      var companyData = JSON.parse(companyResponse);
      company_id = companyData.data.id;
      Logger.log("第" + row + "行:企业已创建 - " + company_name + " (ID: " + company_id + ")");
    }

    // 2. 检查联系人是否已关联该企业
    var personExists = false;
    var person_id = null;
    // 优先用邮箱搜索,没有邮箱则用手机号
    var searchTerm = person_email || person_phone;
    if (searchTerm) {
      var findPersonUrl = "https://api.pipedrive.com/v1/persons/find?term=" + encodeURIComponent(searchTerm) + "&org_id=" + company_id + "&api_token=" + apiToken;
      var personResponse = UrlFetchApp.fetch(findPersonUrl);
      var persons = JSON.parse(personResponse.getContentText()).data;

      if (persons && persons.length > 0) {
        // 匹配姓名+邮箱/手机号,确保是同一个联系人
        for (var i = 0; i < persons.length; i++) {
          var existingPerson = persons[i];
          var hasMatchingEmail = person_email && existingPerson.email.some(item => item.value === person_email);
          var hasMatchingPhone = person_phone && existingPerson.phone.some(item => item.value === person_phone);
          
          if (existingPerson.name === person_name && (hasMatchingEmail || hasMatchingPhone)) {
            personExists = true;
            person_id = existingPerson.id;
            break;
          }
        }
      }
    }

    if (personExists) {
      Logger.log("第" + row + "行:联系人已存在 - " + person_name + " (ID: " + person_id + ")");
    } else {
      // 联系人不存在则创建并关联企业
      var createPersonUrl = "https://api.pipedrive.com/v1/persons?api_token=" + apiToken;
      var personPayload = {
        "name": person_name,
        "email": person_email ? [{"value": person_email, "primary": true}] : [],
        "phone": person_phone ? [{"value": person_phone, "primary": true}] : [],
        "org_id": company_id
      };
      var personOptions = {
        "method": "post",
        "contentType": "application/json",
        "payload": JSON.stringify(personPayload)
      };
      var createPersonResponse = UrlFetchApp.fetch(createPersonUrl, personOptions);
      var personData = JSON.parse(createPersonResponse);
      person_id = personData.data.id;
      Logger.log("第" + row + "行:联系人已创建 - " + person_name + " (ID: " + person_id + ")");
    }
  }
}

使用步骤

  • 替换代码中'My sheet Id'为你的Google Sheet ID(可从Sheet网址中获取)
  • 替换'Sheet name'为你的工作表名称(比如"客户列表")
  • 替换"INSERT_YOUR_API_TOKEN_HERE"为你的Pipedrive API令牌(在Pipedrive账户设置的API部分生成)
  • 确认代码中的单元格范围(AT列企业名、X列联系人姓名、N列邮箱、FQ列手机号)是否与你的表格匹配,若不匹配修改对应列标识
  • 打开Google Sheet,点击菜单栏「扩展程序」→「Apps脚本」,粘贴代码后保存,运行函数即可

内容的提问来源于stack exchange,提问作者Purchase Service

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 02:50:17