2016-12-03 86 views
0

我们使用zapier将发票从Quickbooks Online(QBO)推送到ShipStation(SS)。除SKU字段外(因为某些原因,QBO未通过),一切都被正确映射。所以我创建了一个使用multi-zap和Formatter Utility的查找来将描述与我所做的描述/ skus表匹配。zapier查找迭代数组

限制是Formatter公用程序只运行一次而不是迭代通过有效载荷数组。技术支持告诉我这可以通过代码实用工具完成,但我不知道如何去做。想法?

+0

嘿!通常情况下,获得支持的最佳方式是通过contact @ email,但很高兴通过这里的一些代码。 Zapier Code可以同时运行Python和Javascript,你有偏好吗? – xavdid

+0

我认为JavaScript对于人们来说更容易获得并且得到更广泛的支持。 –

+0

太棒了,有道理。我研究了数组是如何实际发送的,而最简单的事情可能是创建第二个捕获webhook的zap,并为每个SKU执行1个SS输入。如果这很有意义,而且你很酷,那么我可以用该代码发布答案。 – xavdid

回答

0

好吧,所以这里最好的办法是有2个不同的zaps。

Zap A会移动一个QBO触发器,通过你的过滤器,最后一步将是一个代码动作。 Zap B将有一个“Catch Webhook”触发器和一个ShipStation动作。让我们来看看它们。

Zap A有一个代码步骤,可以接收输入数据。这将是您的所有SKU用逗号分隔。

代码一步将是这个样子:

var skus = inputData.skus.split(',') // now it's an actual array 
var otherZapUrl = 'https://zapier.com/catch/12345' 

var lookupTable = { 
    1: 'New York', 
    2: 'Chicago', 
    3: 'Los Angeles' 
} 

skus.map(function(sku){ 
    var payload = { 
    sku: lookupTable[sku] || 'default', 
    // other data you want to send along 
    // name: inputData.name 
    }; 
    fetch(otherZapUrl, {method: 'POST', body: JSON.stringify(payload)}); 
}) 

return [{status: 'ok'}] // this is so the editor doesn't complain 

你的第二个ZAP将抓住网络挂接,并填写您所期望的SS领域。希望这很简单。

至于你需要做什么,你需要重新在JavaScript中查找表(对不起),并将otherZapUrl替换为Zap B端点。此外,请确保在代码的inputData对象中指定了要传递到SS上的所有数据。

那看起来怎么样?

+1

这看起来很棒,并且它会工作......并且需要相当多的时间和修补程序来压扁所有的错误。当我完成后,我会尝试更新。谢谢@xavdid! –

+0

太好了。让我知道你是否需要其他东西! – xavdid

+0

我正在处理此问题,但无法弄清楚如何将来自QBO(zapier将此对象称为'Line Sales Item Line Detail Item Ref Name')的每个订单项的描述与SKU匹配。我假设inputData.skus.split会将'Line Sales Item Line Detail Item Ref Name'拆分为一个js数组。 lookupTable不需要有两个元素,一个描述(我们从QBO捕获的对象)和一个相应的SKU表来匹配?我不确定如何使用函数将数组对象链接到需要硬编码到代码步骤的SKU。 –