3

在 Zapier 中,我将 zap“Schedule by Zapier”设置为触发器,将“Code by Zapier”设置为操作。在动作“Zapier 的代码”中,我想执行以下操作:获取一个 URL 并发布到另一个 URL。但是,当我从本文档(https://github.com/bitinn/node-fetch/tree/32b60634434a63865ea3f79edb33d17e40876c9f#usage)中使用 Zapier 中的“获取”时,第一个请求(GET)已经花费了 900 毫秒并且执行第二个请求意味着执行该操作需要超过 1 秒。扎皮尔不喜欢这样。任何人都可以帮忙吗?谢谢, 埃尔科

4

1 回答 1

3

我可以通过将两个 Code zaps 链接在一起来做到这一点。第一个 zap 执行获取(从 random.org 获取一个随机数):

“运行 JavaScript #1”

fetch('https://www.random.org/passwords/?num=1&len=24&format=plain&rnd=new')
    .then(function(res) {
    return res.text();
    })
    .then(function(body) {
        var output = {id: 1234, rawHTML: body};
        callback(null, output);
    })
    .catch(callback);

此调用将返回一个名为“rawHTML”的变量,您可以在链的下一部分使用该变量。


“运行 Javascript 2” inputData 变量的屏幕截图

//random.org includes an extra \n in the password, need to clean that up
var cleanpassword = inputData.strPassword.replace(/\n/g, '');

var payload = {firstName: inputData.strFirstName, lastName: inputData.strLastName, username: inputData.strUserName, password: cleanpassword};

var testendpoint = 'http://requestb.in/s523eys5';
//var test = JSON.stringify(payload);
//console.log(test);
     
fetch(testendpoint, {
    method: 'POST',
    headers: {'Content-Type': 'application/json'},
    body: JSON.stringify(payload)
    }).then(function(response) {
        return response.text();
    }).then(function(responsebody) {
        var output = {response: responsebody};
        callback(null, output);
    }).catch(function(error) {
        callback(error);
    });


如果在定位真正的端点之前使用http://requestb.in,调试这些东西要容易得多。

于 2016-10-04T04:37:52.817 回答