- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-10-2020 04:21 AM
How to get the value '104' which is the CelsiusToFahrenheitResult here in this response xml into my business rule scipt?
I need to take the value '104' from this xml and place it as the value of a field.
Here is my code,
(function executeRule(current, previous /*null when async*/ ) {
var type = current.u_conversion_type;
var temp = current.u_temperature;
if (type == 'fahrenheit') {
var s = new sn_ws.SOAPMessageV2('Temperature Convert', 'TempConvertSoap.CelsiusToFahrenheit');
s.setStringParameterNoEscape('CelsiusToFahrenheit.Celsius', temp);
var response = s.execute();
var responseBody = response.getBody();
var status = response.getStatusCode();
current.u_converted_temperature = response;
}
if (type == 'celcius') {
var s1 = new sn_ws.SOAPMessageV2('Temperature Convert', 'TempConvertSoap.FahrenheitToCelsius');
s1.setStringParameterNoEscape('FahrenheitToCelsius.Fahrenheit', temp);
var response1 = s1.execute();
var responseBody1 = response1.getBody();
var status1 = response1.getStatusCode();
current.u_converted_temperature = response1;
}
})(current, previous);
Solved! Go to Solution.
- Labels:
-
Integrations
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-11-2020 06:43 PM
Here is the complete code. I've used XMLDocument2 to support scoped applications.
https://developer.servicenow.com/dev.do#!/reference/api/orlando/server/no-namespace/c_XMLDocument2ScopedAPI
(function executeRule(current, previous /*null when async*/ ) {
var type = current.u_conversion_type;
var temp = current.u_temperature;
if (type == 'fahrenheit') {
var s = new sn_ws.SOAPMessageV2('Temperature Convert', 'TempConvertSoap.CelsiusToFahrenheit');
s.setStringParameterNoEscape('CelsiusToFahrenheit.Celsius', temp);
var response = s.execute();
var status = response.getStatusCode();
if (status != 200) {
current.u_converted_temperature = 0; // set to error value
// error throw exception
} else {
var responseBody = response.getBody();
var xmlDoc = new XMLDocument2();
xmlDoc.parseXML(responseBody);
current.u_converted_temperature = xmlDoc.getNodeText("//CelsiusToFahrenheitResult");
}
}
if (type == 'celcius') {
var s1 = new sn_ws.SOAPMessageV2('Temperature Convert', 'TempConvertSoap.FahrenheitToCelsius');
s1.setStringParameterNoEscape('FahrenheitToCelsius.Fahrenheit', temp);
var response1 = s1.execute();
var status1 = response1.getStatusCode();
if (status != 200) {
current.u_converted_temperature = 0; // set to error value
// error throw exception
} else {
var responseBody1 = response1.getBody();
var xmlDoc1 = new XMLDocument2();
xmlDoc1.parseXML(responseBody1);
current.u_converted_temperature = xmlDoc1.getNodeText("//CelsiusToFahrenheitResult");
}
}
})(current, previous);

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-10-2020 05:31 AM
You have a typo. "celcius" should "celsius"? Is this intentional?
if (type == 'celcius') {
To avoid this kind of error, it would be better to just have if-else block rather than 2 if block.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-11-2020 12:57 AM
yes intentional
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-11-2020 01:02 AM
Hope you are doing good.
Did you get a chance to check on the solution provided to resolve your query?
If it helped, please mark appropriate answer as correct & helpful to close the thread.
If not, please let us know if you need some more assistance.
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-10-2020 06:02 AM
Following to parse soap message to get "104".
var xmlDoc = new XMLDocument2();
xmlDoc.parseXML(responseBody1);
var result = xmlDoc.getNodeText("//CelsiusToFahrenheitResult");
gs.info(result);