How to add comma seperated list as option in a Choice type field?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-09-2023 09:40 AM
Hello,
I am getting a list like ( a, b, c, d, e, f) from GlideAjax in Client script response. If I wanted to add all these options in a choice type field. How will I do that?
This is the script I am using, but it's not adding the options. I had checked, I am getting the response from server side.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-09-2023 10:20 AM
Hi @Saurav Bhardwa2 ,
did you check if its printing inside forEach function??
try to get a response as an array or convert the response to an array as below
//after parsing
var jsonResponse = JSON.parse(response);
jsonResponse =jsonResponse.split(",") //you would be having jsonResponse as [a, b, c, d, e, f]
//then rest of the logic....
Thank you,
Hemanth
Certified Technical Architect (CTA), ServiceNow MVP 2024, 2025
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-09-2023 10:27 AM
Hello @Hemanth M1
It's not printing anything in jsonResponse variable neither in each function. Is there any other way of doing this?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-09-2023 10:43 AM
Hi @Saurav Bhardwa2 ,
forEach function wouldn't iterate through comma separated string , it expects an array , so try above logic i mentioned to convert to array and check
or try below one and also try to print responsearray
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
var siteName = g_form.getValue('u_sharepoint_sites');
var ga = new GlideAjax('global.SharePointUtils');
ga.addParam('sysparm_name', 'allSiteName');
ga.addParam('sysparm_site_name', siteName);
ga.getXMLAnswer(getSite);
function getSite(response) {
console.log('test123 ' + response);
//if (response) {
// Parse the JSON response from SharePoint
var jsonResponse = JSON.parse(response);
console.log('test1234 ' + jsonResponse);
if (jsonResponse && jsonResponse.value) {
var responsearray = jsonResponse.value.split(","); //convert to an array
// Iterate through the sites and add options to the choice list
responsearray.forEach(function(site) {
if (site.name) {
// Add each site as an option to the choice list
g_form.addOption('u_sharepoint_sites', site, site);
}
});
}
}
}
Thank you,
Hemanth
Certified Technical Architect (CTA), ServiceNow MVP 2024, 2025
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-09-2023 11:12 AM
No it did not work.
Below is the function I am using in Script include, if that helps
allSiteName: function() {
try {
var r = new sn_ws.RESTMessageV2('SharePoint Graph', 'Default GET');
var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
if (httpStatus === 200) {
// Parse the JSON response
var jsonResponse = JSON.parse(responseBody);
// Check if the "value" property exists in the response
if (jsonResponse && jsonResponse.value) {
var siteNames = [];
// Iterate through the "value" array and extract the "name" property
jsonResponse.value.forEach(function(site) {
if (site.name) {
siteNames.push(site.name);
}
});
// Now, siteNames array contains the names of the SharePoint sites
var name = siteNames.join(", ");
return name;
} else {
//gs.info("Response does not contain 'value' property or 'name' property.");
}
} else {
//gs.info("HTTP Request failed with status: " + httpStatus);
}
} catch (ex) {
var message = ex.message;
gs.info("Error: " + message);
}
},