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
相关产品推荐
相关产品推荐

