- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-23-2024 09:27 AM
Hi Experts,
I am new to SRAPIs. I am trying to implement a user functionality where, the user can select any number of records from the list view of a table and download it in CSV format. I am trying to achieve this via making use of SRAPI. However, I am unsure on how do I pass the user selected records sys ids while making the API call. Can anyone please help me undersatnd this?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-24-2024 09:10 AM
While I have not tested the following script, you can try it-
function invokeGetAPI() {
var sysIds = g_list.getChecked(); // Get the selected sys_ids from the list view
var apiUrl = '/api/your_scripted_rest_api_endpoint?selectedSysIds=' + sysIds.join(','); // Construct the URL for the GET API endpoint
// Make the GET request to the Scripted REST API
var xhr = new XMLHttpRequest();
xhr.open('GET', apiUrl, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function () {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
console.log(xhr.responseText);
} else {
console.error('Error:', xhr.statusText);
}
}
};
xhr.send();
}
Also, can you mark my SRAPI answer correct and helpful for the interest of community?
Regards,
Amit
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-23-2024 09:37 AM
Do you want to make a GET call to download CSV in response from the Scripted REST API endpoint?
Regards,
Amit
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-23-2024 09:59 AM
Yes Thats correct
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-23-2024 10:06 AM
You can create a scripted REST API something like below-
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
var selectedSysIds = request.queryParams.selectedSysIds.split(',');
var gr = new GlideRecord('your_table_name');
gr.addQuery('sys_id', 'IN', selectedSysIds);
gr.query();
// Prepare CSV header
var csv = 'Field1,Field2,Field3\n'; // Customize with your actual field names
while (gr.next()) {
csv += '"' + gr.getValue('field1') + '","' + gr.getValue('field2') + '","' + gr.getValue('field3') + '"\n';
}
response.setContentType('text/csv');
response.setBody(csv);
})(request, response);
Your endpoint URL should look like this where you can enter sys_ids (comma separated) to download the CSV-
GET /api/your_scripted_rest_api_endpoint?selectedSysIds=<comma_separated_sys_ids>
Please mark my answer helpful and correct.
Regards,
Amit
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-23-2024 09:43 PM - edited 03-23-2024 09:44 PM
Thanks @Amit Pandey ! Can you also help me understand how can I pass the sys_ids from the UI action script? When the user will click on the button, that UI action should invoke this GET API maybe via a script include or if possible, directly from itself. I already have the SRAPI ready but the part I am not undersatnding is passing the list of sys_ids which we will be able to get from the UI action with the help of below code -
var sys_id = g_list.isChecked();
var sys_arr = sys_id.split(",");