Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-24-2023 01:39 PM
Hello, for anyone interested, I was able to get it working. My issues were:
1) var xmlDoc = new GlideXMLDocument(responseBody); should be var xmlDoc = new XMLDocument2();
2) I needed to parse the document via xmlDoc.parseXML(responseBody);
3) getChildText should be getTextContent
Fully re-worked code below. Still needs some refining, but it did the job and populated by table with the data.
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
try {
gs.log('Starting script execution...');
var restMessage = new sn_ws.RESTMessageV2('Workday HR', 'Default GET');
var restResponse = restMessage.execute();
if (restResponse.getStatusCode() !== 200) {
gs.error('Error ' + restResponse.getStatusCode() + ': ' + restResponse.getErrorMessage());
}
var responseBody = restResponse.getBody();
var xmlDoc = new XMLDocument2();
xmlDoc.parseXML(responseBody);
var reportList = xmlDoc.getFirstNode("//wd:Report_Data");
var reportEntries = reportList.getChildNodeIterator();
while (reportEntries.hasNext()) {
//for (var i = 0; i < reportEntries.getLength(); i++) {
var reportEntry = reportEntries.next();
var positionNode = reportEntry.getFirstChild('wd:Positions');
var positionNameNode = positionNode.getFirstChild('wd:Position_Name');
var positionIDNode = positionNode.getLastChild('wd:Position_ID');
var positionName = positionNameNode.getTextContent();
var positionID = positionIDNode.getTextContent();
var gr = new GlideRecord('u_workday_hr_inbound');
gr.u_position_name = positionName;
gr.u_position_id = positionID;
gr.insert();
}
gs.log('Script execution completed.');
} catch (e) {
gs.error('Error occurred: ' + e);
}
restResponse.setStatus(200);
restResponse.setBody('Data inserted successfully.');
})(request, response);