- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-30-2019 12:24 PM
Hello,
How to extract data from response body and set that value in table.
ex - I am calling one API and with that I am getting some records and that are stored in response body. Now I want to extract all the values from response body and set that value in one table.
I am trying to achieve this by schedule job.
Can anyone please help me that how I can extract that values from response body and set that value in our tables.
Regards,
Nivedita
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-07-2019 04:38 AM
Hi Nivedita,
the script shared earlier should work; ensure you give correct field names for the 6 fields
try {
var r = new sn_ws.RESTMessageV2('Get Data', 'Default GET');
//override authentication profile
authentication_type ='basic';
r.setAuthenticationProfile(authentication_type, 'efea940d1b408010acf5fc88cc4bcbf7');
var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
gs.print(responseBody);
gs.log("response body is" + responseBody);
var obj = JSON.parse(responseBody);
for(var i = 0; i<obj.plannedEvents.length; i++) {
var gr = new GlideRecord('u_outage');
gr.initialize();
gr.u_rollbackplan = obj.plannedEvents[i].rollbackPlan;
gr.u_plannedeventstartdate = obj.plannedEvents[i].plannedEventStartDate;
gr.u_closurecode = obj.plannedEvents[i].closureCode;
gr.u_description = obj.plannedEvents[i].description;
gr.u_plannedeventenddate = obj.plannedEvents[i].plannedEventEndDate;
gr.u_ticketid = obj.plannedEvents[i].ticketId;
gr.u_correlationid = obj.plannedEvents[i].correlationId;
gr.u_impact = obj.plannedEvents[i].impact;
gr.u_executionowner = obj.plannedEvents[i].executionOwner;
gr.u_maintenancetype = obj.plannedEvents[i].maintenanceType;
gr.u_sitelocation= obj.plannedEvents[i].maintenanceType;
gr.u_expecteddowntime= obj.plannedEvents[i].expectedDowntime;
gr.u_activitystatus= obj.plannedEvents[i].activityStatus;
var servicesArray = [];
for(var j = 0; j<obj.plannedEvents[i].services.length; j++) {
var gr = new GlideRecord('services_table');
gr.initialize();
gr.u_serviceidentifier= obj.plannedEvents[i].services[j].serviceIdentifier;
gr.u_protectionstatus= obj.plannedEvents[i].services[j].protectionStatus;
gr.u_servicetype= obj.plannedEvents[i].services[j].serviceType;
gr.u_servicealias= obj.plannedEvents[i].services[j].serviceAlias;
gr.u_customerlename= obj.plannedEvents[i].services[j].customerLeName;
gr.u_cuid= obj.plannedEvents[i].services[j].cuid;
var sysId = gr.insert();
servicesArray.push(sysId.toString());
}
gr.u_services = servicesArray.toString();
gr.insert();
}
gs.log("table data is" + responseBody);
}
catch(ex) {
gs.info('Exception is: ' + ex);
}
Mark ✅ Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
Thanks
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
10-01-2019 08:14 AM
Hello,
I have written below code in my schedule job to get response body
try {
var r = new sn_ws.RESTMessageV2('Get Data', 'Default GET');
//override authentication profile
authentication_type ='Basic';
r.setAuthenticationProfile(authentication_type, 'Test data');
//set a MID server name if one wants to run the message on MID
//r.setMIDServer('MY_MID_SERVER');
//if the message is configured to communicate through ECC queue, either
//by setting a MID server or calling executeAsync, one needs to set skip_sensor
//to true. Otherwise, one may get an intermittent error that the response body is null
//r.setEccParameter('skip_sensor', true);
var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
gs.addInfoMessage(responseBody+ "responsebody is");
gs.log(responseBody+'Nivi test');
}
catch(ex) {
var message = ex.message;
}
but I am getting below error :
Any suggestions on this?
Regards,
Nivedita
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-02-2019 12:18 AM
Hello Abhishek,
I need to get the value from response body and set the value in custom table.
How I can set values in my custom table 'x'.
Regards,
Nivedita

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-02-2019 09:14 PM
Hi,
After the REST call, to parse the response and put it in a table, can you please try the below thing:
var responseBody = response.getBody();
responseBody = JSON.parse(responseBody);
for (var i = 0; i < responseBody.length; i++) { // parse response body records
var gr = new GlideRecord('TABLE_NAME');
gr.initialize(); //insert records into table with response values
gr.TABLE_FIELD_NAME_1 = responseBody[i].PARAMETER_NAME_A;
gr.TABLE_FIELD_NAME_2 = responseBody[i].PARAMETER_NAME_B;
gr.TABLE_FIELD_NAME_3 = responseBody[i].PARAMETER_NAME_c;
gr.insert();
}
Please change the TABLE_NAME, TABLE_FIELD_NAME_1, PARAMETER_NAME_A accordingly and try it.
Hope this helps.
Mark Helpful, Correct based on the impact.
Thanks.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-03-2019 04:02 AM
Hello,
Thank you so much for your reply.
I need to insert all the data into my custom table.
I have written below code but when i am running this background script it is showing some output. When i see my custom table then data is not filled in table.
Below is my code :
try {
var r = new sn_ws.RESTMessageV2('Get Data', 'Default GET');
//override authentication profile
authentication_type ='basic';
r.setAuthenticationProfile(authentication_type, 'efea940d1b408010acf5fc88cc4bcbf7');
var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
gs.print(responseBody);
gs.log("response body is" + responseBody);
var obj = JSON.parse(responseBody);
for(var i = 0; i<obj.plannedEvents.length; i++) {
var gr = new GlideRecord('u_outage');
gr.initialize();
gr.u_rollbackplan = obj.plannedEvents[i].rollbackPlan;
gr.u_plannedeventstartdate = obj.plannedEvents[i].plannedEventStartDate;
gr.u_closurecode = obj.plannedEvents[i].closureCode;
gr.u_description = obj.plannedEvents[i].description;
gr.u_plannedeventenddate = obj.plannedEvents[i].plannedEventEndDate;
gr.u_ticketid = obj.plannedEvents[i].ticketId;
gr.u_correlationid = obj.plannedEvents[i].correlationId;
gr.u_impact = obj.plannedEvents[i].impact;
gr.u_executionowner = obj.plannedEvents[i].executionOwner;
gr.u_maintenancetype = obj.plannedEvents[i].maintenanceType;
gr.u_sitelocation= obj.plannedEvents[i].maintenanceType;
gr.u_expecteddowntime= obj.plannedEvents[i].expectedDowntime;
gr.u_activitystatus= obj.plannedEvents[i].activityStatus;
for(var j = 0; j<obj.plannedEvents[i].services.length; j++) {
gr.u_serviceidentifier= obj.plannedEvents[i].services[j].serviceIdentifier;
gr.u_protectionstatus= obj.plannedEvents[i].services[j].protectionStatus;
gr.u_servicetype= obj.plannedEvents[i].services[j].serviceType;
gr.u_servicealias= obj.plannedEvents[i].services[j].serviceAlias;
gr.u_customerlename= obj.plannedEvents[i].services[j].customerLeName;
gr.u_cuid= obj.plannedEvents[i].services[j].cuid;
}
gr.insert();
gs.log("table data is" + responseBody);
}
catch(ex) {
var message = ex.message;
}
Below is my output :
Could you please tell me where I am doing wrong.
Regards,
Nivedita

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-07-2019 12:43 AM
Hi
instead of gr.field_value = "your_json res" can you do gr.setValue("field",your_jsonres);