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

Zapier中如何利用首次API调用结果发起二次调用?

在Zapier中链式调用API:解决Promise与async/await的使用问题

你的问题核心是没正确处理异步请求的Promise结果——直接把z.request()返回的Promise当作实际数据来用了,自然拿不到id这类属性。要实现“用第一次API的结果发起第二次调用”,必须用async/await等待第一个请求完成,拿到真实数据后再构建第二个请求的参数。

先给你修正后的完整代码,再逐点说明问题:

// 整个逻辑包裹在async函数中,Zapier支持这种写法
return z.execute(async function(bundle) {
  const options = {
    url: `https://url.sample/${bundle.authData.tenant}/api/${bundle.inputData.catalogs}/items?skip=0&limit=1`,
    method: 'GET',
    headers: {
      'Accept': 'application/json',
      'Authorization': bundle.authData.token
    },
    params: {},
    removeMissingValuesFrom: {
      'body': false,
      'params': false
    },
  }

  // 用await等待第一个请求完成,拿到真实响应数据
  const response = await z.request(options);
  const data = response.json;

  // 基于第一个请求的结果构建第二个请求的参数
  const options2 = {
    url: `https://url.sample/${bundle.authData.tenant}/api/${bundle.inputData.catalogs}/items/${data[0].id}`,
    method: 'GET',
    headers: {
      'Accept': 'application/json',
      'Authorization': bundle.authData.token
    },
    params: {},
    removeMissingValuesFrom: {
      'body': false,
      'params': false
    },
  }

  // 同样用await等待第二个请求完成
  const response2 = await z.request(options2);
  const data2 = response2.json;

  const final_result = [];
  // 先判断apps是否存在且为数组,避免结构不符时报错
  if (data2.apps && Array.isArray(data2.apps)) {
    for (let i of data2.apps) {
      // 修正原代码的变量错误,往final_result里推数据
      final_result.push({
        "eventName": "catalog.app.completed", 
        "catalog": bundle.inputData.catalogs, 
        "record": data[0].id, // 取第一个请求返回的id,修正原代码的data.ID错误
        "app": i.name 
      });
    }
  }

  return final_result;
})(bundle);

关键修正点:

  • 包裹async函数:Zapier允许用z.execute(async function(bundle) { ... })运行异步逻辑,这样内部就能合法使用await。
  • 用await等待请求完成:z.request()返回的是Promise对象,必须用await拿到真实的响应后,再通过response.json解析出实际数据,不能直接把Promise当作结果来用。
  • 修正变量错误:原代码把数据推送目标写成了data,应该是final_result;record字段的data.ID是错误写法,正确应该是data[0].id。
  • 增加容错判断:遍历data2.apps前先验证它的存在性和类型,避免API返回结构不符合预期时抛出错误。

另外,原代码第一个URL里的多余//已经修正,避免请求路径出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:58:12