在“Zapier 代码”操作中触发多个 webhook 调用
Posted
技术标签:
【中文标题】在“Zapier 代码”操作中触发多个 webhook 调用【英文标题】:Triggering multiple webhook calls in a "Code by Zapier" action 【发布时间】:2021-08-01 23:03:27 【问题描述】:我目前正在尝试在“Zapier 代码”操作中创建一个 for 循环。代码的意图是有一个执行 5 次的 for 循环;每次循环触发时,我都想点击一个 webhook。
for 循环执行完毕后,我使用回调函数输入一行代码以成功退出操作(不以回调函数结尾会触发错误“您必须返回单个对象或对象数组” )。
但是,如果我使用回调完成操作,则 webhook 永远不会被命中/触发(就好像 fetch 函数永远不会执行或无法完成一样)。如果我最后不使用回调(并使用类似“return output = data: data;”之类的东西,我会收到“ReferenceError:未定义输出”错误,但会执行获取请求并且 webhook 被命中5次。
我使用的代码如下:
var url = "https://hooks.zapier.com/hooks/catch/5506184/byko7zw/";
var i;
for (i = 0; i < 5; i++)
var headers =
"Content-type": "application/json",
;
var body = JSON.stringify( data: "Hello, World!", number: i );
fetch(url, method: "POST", headers: headers, body: body ).then((res) =>
console.log(res);
)
.catch(callback);
callback(null, );
有没有一种方法可以在 for 循环中成功地点击 webhook 指定的次数并成功退出,而不仅仅是一次或其他一次?任何帮助或建议将不胜感激!
【问题讨论】:
【参考方案1】:是的,这是可能的!为请求使用await
来构建代码会更容易(而不是旧的callback
样式,虽然仍然有效,但相当混乱)。
试试这样的:
const url = "https://hooks.zapier.com/hooks/catch/5506184/byko7zw/";
for (let number = 0; number < 5; number++)
var headers =
"Content-type": "application/json",
;
const body = JSON.stringify( data: "Hello, World!", number );
const response = await fetch(url,
method: "POST",
headers,
body,
);
response.throwForStatus(); // exit if there are errors
// you can log the response here, but you don't need to
// code steps have to return _something_
return done: true ;
这将以更可预测的方式工作。您可能会遇到的一件事是,一个接一个地发出 5 个请求可能会很慢。如果确切的顺序无关紧要,您可以像这样并行化它们:
const url = "https://hooks.zapier.com/hooks/catch/5506184/byko7zw/";
var headers =
"Content-type": "application/json",
;
const numbers = [...Array(5).keys()]; // fancy way to get [0,1,2,3,4]
const promiseArray = numbers.map((number) =>
fetch(url,
method: "POST",
headers,
body: JSON.stringify( data: "Hello, World!", number ),
)
);
await Promise.all(promiseArray)
// code steps have to return _something_
return done: true ;
【讨论】:
【参考方案2】:快速说明:Zapier 文档指出,调用 response.throwForStatus();
仅适用于核心 v9 或更早版本。 10+ 他们给你打电话。
【讨论】:
这并没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review以上是关于在“Zapier 代码”操作中触发多个 webhook 调用的主要内容,如果未能解决你的问题,请参考以下文章
如何从“Zapier 代码”(Javascript)读取文件输入
Zapier 代码 (JS) + Twitter API - 发布收藏夹/创建