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

Google Local Services API与CRM集成:嵌套字段映射问题求助

解决Google Local Service Ads API线索中consumerPhoneNumber的统一映射问题

核心思路

针对API返回的线索数据中consumerPhoneNumber字段嵌套在不同对象(phoneLead/messageLead)的情况,通过通用提取函数统一获取该字段的值,无需区分线索类型。

API响应结构示例

假设你的API返回的线索数据有两种典型结构:

// 电话线索结构
const phoneLead = {
  lead: {
    phoneLead: {
      consumerPhoneNumber: "123-456-7890",
      callDurationSeconds: 120
    },
    leadId: "PL-12345"
  }
};

// 消息线索结构
const messageLead = {
  lead: {
    messageLead: {
      consumerPhoneNumber: "098-765-4321",
      messageBody: "咨询服务详情"
    },
    leadId: "ML-67890"
  }
};

通用提取函数实现

用ES6+的可选链(?.)和空值合并运算符(??)编写安全的提取逻辑:

function extractConsumerPhone(leadObj) {
  // 依次检查不同嵌套路径,取第一个存在的值,无则返回空字符串
  return leadObj.phoneLead?.consumerPhoneNumber 
    ?? leadObj.messageLead?.consumerPhoneNumber 
    ?? "";
}

集成到你的Zap JavaScript代码中

假设你的Zap通过inputData接收API响应数据,直接调用函数即可完成统一映射:

// 从Zap输入中获取线索核心数据
const leadData = inputData.lead;

// 提取统一的手机号
const targetPhoneNumber = extractConsumerPhone(leadData);

// 输出给CRM的对应字段使用
output = {
  crm_phone_field: targetPhoneNumber,
  // 其他需要映射的字段...
};

扩展说明

如果后续API新增其他线索类型(比如emailLead),只需在函数中追加对应路径:

function extractConsumerPhone(leadObj) {
  return leadObj.phoneLead?.consumerPhoneNumber 
    ?? leadObj.messageLead?.consumerPhoneNumber 
    ?? leadObj.emailLead?.consumerPhoneNumber // 新增线索类型的路径
    ?? "未获取到手机号"; // 自定义默认值
}

注意事项

  • 可选链(?.)自动处理对象不存在的情况,避免抛出Cannot read property...错误;
  • 空值合并运算符(??)仅在左侧为null/undefined时返回右侧,不会覆盖空字符串、0等有效值;
  • Zapier的JavaScript运行环境完全支持ES6+语法,无需担心兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:27:12