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

Zapier集成Zoho CRM:Promise失败捕获与空结果处理求助

解决Zoho CRM搜索Accounts模块的记录问题

我帮你调整了代码,解决搜索不到记录报错、响应空值检查以及Promise错误捕获的问题,先看修正后的完整代码:

const options = {
  url: `https://www.zohoapis.com/crm/v2/Accounts/search?criteria=(Account_Name:equals:${bundle.inputData.Account_Name})`,
  method: 'GET',
  headers: {
    "Content-Type": "application/json",
    "Authorization": `Zoho-oauthtoken ${bundle.authData.access_token}`,
    "Accept": "application/json"
  },
  params: { }
};

return z.request(options)
  .then((response) => {
    response.throwForStatus();
    
    // 先检查响应内容是否为空,避免解析时报错
    if (!response.content) {
      return [];
    }
    
    const parsedResponse = z.JSON.parse(response.content);
    // Zoho CRM搜索接口的实际结果存放在data字段,无匹配时data为空数组
    const results = parsedResponse.data || [];
    
    // 按需求返回:有记录则返回记录数组,无记录返回空数组
    return results;
  })
  .catch((error) => {
    // 捕获请求全流程的错误(网络问题、权限错误、接口异常等)
    console.error('Zoho CRM搜索请求失败:', error);
    // 按需求返回空数组,也可根据场景自定义错误处理逻辑
    return [];
  });

关键修改说明

  • 响应空值检查:在解析JSON前先判断response.content是否存在,避免空内容触发解析报错。
  • 正确提取结果:Zoho CRM的搜索接口返回结构中,实际记录都在data字段里,无匹配记录时该字段本身就是空数组,直接返回它就能满足“找不到返回空数组”的需求。
  • Promise错误捕获:通过.catch()捕获整个请求流程中可能出现的异常(比如网络超时、权限验证失败、接口返回5xx错误等),这里我们打印错误日志后返回空数组,你也可以根据需要调整错误处理逻辑(比如抛出特定错误给Zapier)。
  • 修正结果格式:你原代码把整个响应包成嵌套数组的写法不符合Zoho的返回结构,现在直接返回data数组,更贴合Zapier对结果的预期——找到记录时返回包含记录的数组,无记录时返回空数组。

如果你的需求确实是要返回嵌套一层的数组(比如[results]),只需把return results;改成return [results];即可,但通常Zapier的模块更适配单层记录数组的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:51:11