azureazure-logic-appsinline-code

Find HTML Element value in Inline Code Connector Logic App


I am trying to get the value from an API multipart Response which contains json, xml and html. Plus HTML doesn't have any id and any class on its elements in that response. I want to get the complete table in an element and want to get the values from its tr. Please suggest me how can I do this in inline code in logic apps.

var response = workflowContext.trigger.outputs.body; // API Response

var multiBody = response.body.$multipart[4].body;    // multipartBody

var table = multiBody.                               // How to get table section and get its tr values

return table;

I have already written the javascript code which I want to implement in inline code connector. My code is

var rows = document.getElementsByTagName('table')[4].rows;
var firstRow = rows[0];                     // LTV/CLTV Row
var firstCell = firstRow.cells[1];          // LTV/CLTV Index
var firstText = firstCell.innerText;
var firstValue = firstText.substring(0, firstText.indexOf('/') - 1);        // LTV
var secondValue = firstText.substring(firstText.indexOf('/') + 2, firstText.lastIndexOf('/') - 1);      // CLTV

Please help me how can I do this.

Plus as it is mentioned in the documentation that we can write the javascript in inline code connector then why getElementById, getElementByTagname functions are not working here.


Solution

  • The Inline Code Actions runs NodeJS for JavaScript which doesn't really have a DOM Object to work with like a browser.

    Instead, you will have to parse the DOM or just perform string searches to get what you need.

    Parsing the DOM wouldn't be that simple of course and it would be best to use something like jsdom inside an Azure Function instead, if string/regex searches won't cut it for you.