我从Zapier Webhook触发器收到原始JSON响应。我正在寻找一种方法,可以轻松地访问CUSTOMFIELDS AND LINKS中的每个嵌套字段,以进行连续的Zap步骤。 JSON主体如下所示:
{"entity":{
"OPPORTUNITY_ID":22992638,
"OPPORTUNITY_NAME":"Test 5",
"PROBABILITY":10,
"BID_CURRENCY":"USD",
"BID_TYPE":"Fixed Bid",
"CATEGORY_ID":6132227,
"PIPELINE_ID":575195,
"STAGE_ID":2172640,
"OPPORTUNITY_STATE":"OPEN",
"RESPONSIBLE_USER_ID":1689885,
"OWNER_USER_ID":1689885,
"DATE_CREATED_UTC":"2019-01-15T21:11:50.28",
"DATE_UPDATED_UTC":"2019-01-15T21:12:10.92",
"VISIBLE_TO":"EVERYONE",
"CUSTOMFIELDS":[{
"CUSTOM_FIELD_ID":"Tax_Matters_Contact__c",
"FIELD_VALUE":275224094
}],
"TAGS":[],
"LINKS":[{
"LINK_ID":199045197,
"CONTACT_ID":275224094,
"OPPORTUNITY_ID":22992638
},
{
"LINK_ID":199045198,
"OPPORTUNITY_ID":22992638,
"ORGANISATION_ID":130032601
}
]
}}
感谢Zapier的David,我在代码步骤中运行了此Javascript,它非常适合CONTACT_ID,因为它通常位于数组的第一位,但是如果没有CONTACT_ID,它只会找到ORGANIZATION_ID,因此它会跳过第一条记录,找到第二条。我猜它在数组中第一个列出,然后不再继续,但是我不知道为什么它不会迭代到下一个,因为它仅仅是一个原始的网络挂钩。知道如何使它起作用吗?
该数组首先提供CONTACT_ID的记录,然后提供ORGANISATION_ID的记录(如果存在),但是此顺序可以更改/反向或也可以出现另一个记录,例如PROJECT_ID。我想用一个代码步找到它们的全部或全部,以便输出提供Zap的连续阶段。
const j = JSON.parse(inputData.body)
return j.entity.LINKS.find(l => l.CONTACT_ID || l.ORGANISATION_ID) || {}
这是我的Zap:
答案 0 :(得分:0)
Zapier Platform团队的David在这里。
您在评论中提到,您想在LINKS中找到具有contact_id
或organisation_id
的第一项。这将解析json并返回与之匹配的对象(如果有)
const j = JSON.parse(inputData.entity)
return j.entity.LINKS.find(l => l.CONTACT_ID || l.ORGANISATION_ID) || {}
对于上面的对象,这将返回{"LINK_ID":199045197, "CONTACT_ID":275224094, "OPPORTUNITY_ID":22992638}
;如果链接中的任何项都不具有这些键之一,则返回空白。
您会注意到,我的结构与您原始问题中的代码匹配。仔细观察后,我意识到它应该首先起作用。因此,有可能由于您的设置中的某些原因而无法使用。我会用设置屏幕的屏幕截图更新您的问题,以便我们更密切地说明为什么您的代码最初不起作用。