Попытка выяснить некоторый Javascript для извлечения поля из ответа JSON на необработанный триггер webhook в Zapier - PullRequest
0 голосов
/ 16 января 2019

У меня есть необработанный ответ JSON от триггера Zapier Webhook. Я ищу способ облегчить доступ к каждому из вложенных полей в 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, я запускаю этот Javascript в шаге кода, и он отлично работает для CONTACT_ID, так как обычно он находится в первом порядке в массиве, но он находит ORGANIZATION_ID, только если нет CONTACT_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) || {}

Вот мой Зап:

Вот мой шаг кода

Вот результаты, когда CONTACT_ID найден в моем коде

1 Ответ

0 голосов
/ 23 января 2019

Дэвид здесь, из команды Zapier Platform.

Вы упомянули в комментарии, что хотели найти первый элемент в ССЫЛКАХ, который имел либо 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} для объекта выше или будет пустым, если ни один из элементов в ссылке не имеет ни одного из этих ключей.

Вы заметите, что моя структура соответствует вашему коду из вашего исходного вопроса. Посмотрев поближе, я понял, что это должно сработать в первую очередь. так что есть вероятность, что это не сработает из-за чего-то в вашей настройке. Я бы обновил ваш вопрос скриншотами экрана установки, чтобы мы могли более точно сказать, почему ваш код не работал с самого начала.

...