Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| vendors:cisco:uc:webconnect:js [2024/11/17 10:43] – created gerardorourke | vendors:cisco:uc:webconnect:js [2025/08/23 11:29] (current) – [Positions] gerardorourke | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Webex Connect JavaSscript Examples ====== | ====== Webex Connect JavaSscript Examples ====== | ||
| + | |||
| + | ===== Convert Google Sheets API response to Correct JSON format (Headers -> Variable Names) ===== | ||
| + | |||
| + | Retrieve Google Sheets worksheet- example: | ||
| + | * https:// | ||
| + | * example: https:// | ||
| + | |||
| + | Then set the response Code and Response Body as variables when leaving the HTTP node - as per below.\\ | ||
| + | {{: | ||
| + | |||
| + | ====An example output from the Google Sheets API:==== | ||
| + | <code JavaScript> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | [ | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ], | ||
| + | [ | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ], | ||
| + | [ | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ] | ||
| + | ] | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Format what we want the above to be in ===== | ||
| + | <code JavaScript> | ||
| + | [ | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | ] | ||
| + | </ | ||
| + | |||
| + | ==== Code to Convert to ' | ||
| <code JavaScript> | <code JavaScript> | ||
| if (statusCode == 200) { | if (statusCode == 200) { | ||
| Line 9: | Line 66: | ||
| const output = []; | const output = []; | ||
| - | | + | for (let i = 0; i < rows.length; |
| - | for (let i = 0; i < 2; i++) { | + | |
| let rowObject = {}; // Create a new object for each row - note ' | let rowObject = {}; // Create a new object for each row - note ' | ||
| for (let j = 0; j < headers.length; | for (let j = 0; j < headers.length; | ||
| Line 26: | Line 82: | ||
| 2; | 2; | ||
| } | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Positions ===== | ||
| + | |||
| + | JDS -> Data Parse | ||
| + | <code JavaScript> | ||
| + | //var jsonString = ' | ||
| + | |||
| + | var jsonString = jdsResponseBody; | ||
| + | var inputJson = JSON.parse(jsonString); | ||
| + | |||
| + | var outputJson = []; | ||
| + | for (var i = 0; i < inputJson.data.length; | ||
| + | outputJson.push(inputJson.data[i].data); | ||
| + | } | ||
| + | var jsonJdsDataObjectsString = JSON.stringify(outputJson); | ||
| + | 1; | ||
| + | </ | ||
| + | |||
| + | === min distance === | ||
| + | <code JavaScript> | ||
| + | //var jsonString =' | ||
| + | var jsonString = jsonJdsDataObjectsString; | ||
| + | |||
| + | //var lat_ref = 53.2700681; | ||
| + | //var lon_ref = -6.1172521; | ||
| + | //var min_dist = 200; | ||
| + | |||
| + | var lat_ref = locationLatitude; | ||
| + | var lon_ref = locationLongitude; | ||
| + | var min_dist = min_dist; | ||
| + | |||
| + | var inputJson = JSON.parse(jsonString); | ||
| + | var distMeter = Math.sqrt(Math.pow(lat_ref, | ||
| + | function computeDistance(lat, | ||
| + | var latDiffMeter = 111320 * (lat - lat_ref); | ||
| + | var lonDiffMeter = 67700 * (lon - lon_ref); | ||
| + | var distMeter = Math.sqrt(Math.pow(latDiffMeter, | ||
| + | //return {latDiffMeter, | ||
| + | return { | ||
| + | latDiffMeter: | ||
| + | }; | ||
| + | } | ||
| + | |||
| + | // Process each entry | ||
| + | var output = []; | ||
| + | for (var i = 0; i < inputJson.length; | ||
| + | var entry = inputJson[i]; | ||
| + | var latitude = entry.position.latitude; | ||
| + | var longitude = entry.position.longitude; | ||
| + | var dist = computeDistance(latitude, | ||
| + | |||
| + | if (dist.distMeter <= min_dist) { | ||
| + | output.push({ | ||
| + | eircode: entry.eircode, | ||
| + | item: entry.item, | ||
| + | latitude: latitude, | ||
| + | longitude: longitude, | ||
| + | // | ||
| + | // | ||
| + | DistMeter: dist.distMeter | ||
| + | }); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | jsonMinDistanceString = JSON.stringify(output); | ||
| + | |||
| + | if (output === []) { | ||
| + | 1; | ||
| + | } else { | ||
| + | 2; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <code JavaScript> | ||
| + | //var jsonString = ' | ||
| + | var jsonString = jsonMinDistanceString; | ||
| + | var inputJson = JSON.parse(jsonString); | ||
| + | |||
| + | // Count occurrences | ||
| + | var counts = {}; | ||
| + | for (var i = 0; i < inputJson.length; | ||
| + | var itemName = inputJson[i].item; | ||
| + | // Normalize first letter uppercase, rest lowercase (like " | ||
| + | var formattedName = itemName.charAt(0).toUpperCase() + itemName.slice(1).toLowerCase(); | ||
| + | |||
| + | if (counts[formattedName]) { | ||
| + | counts[formattedName]++; | ||
| + | } else { | ||
| + | counts[formattedName] = 1; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // Convert counts object into array of {Item, Count} | ||
| + | var output = []; | ||
| + | for (var key in counts) { | ||
| + | if (counts.hasOwnProperty(key)) { | ||
| + | output.push({ | ||
| + | Item: key, | ||
| + | Count: counts[key] | ||
| + | }); | ||
| + | } | ||
| + | } | ||
| + | |||
| + | jsonDuplicateString = JSON.stringify(output); | ||
| + | 1; | ||
| + | </ | ||
| + | |||
| + | <code JavaScript> | ||
| + | //var jsonString = = ' | ||
| + | var jsonString = jsonDuplicateString; | ||
| + | var inputJson = JSON.parse(jsonString); | ||
| + | |||
| + | duplicateListString = ""; | ||
| + | |||
| + | for (var i = 0; i < inputJson.length; | ||
| + | var item = inputJson[i]; | ||
| + | duplicateListString += " | ||
| + | } | ||
| + | |||
| + | 1; | ||
| </ | </ | ||