How to separate the items one by one using bullet point or number using script

vinuth v
Tera Expert

Hi All,

 

I have written the schedule job for trigger the email notification to the catalog item owner.

 

var gr = new GlideRecord('sc_cat_item');
gr.addQuery('active=true^u_cat_item_owner.active=true^u_cat_item_ownerISNOTEMPTY');
//gr.addQuery('active=true^u_cat_item_owner.active=true^u_cat_item_ownerISNOTEMPTY^nameSTARTSWITHRetire a Standard Change Template');
gr.query();
 
// Create an object to store item names grouped by owner
var ownerItems = {};
 
while (gr.next()) {
    var owner = gr.u_cat_item_owner;
//gs.log("ownerowner"+owner);
    // Check if the owner is defined
    if (owner) {
        var itemName = gr.name.toString();
 
        // Initialize an array for the owner if it doesn't exist
        if (!ownerItems[owner]) {
//gs.log("ownerItems56"+ownerItems[owner]);
            ownerItems[owner] = [];
        }
 
        // Push the item name into the owner's array
ownerItems[owner].push(itemName);
//gs.log("ownerItems62"+ownerItems[owner]);
    }
}
 
// Send notifications to owners with more than one item
for (var ownerKey in ownerItems) {
//gs.log("ownerItems[ownerKey].length" + ownerItems[ownerKey].length);
    if (ownerItems[ownerKey].length >= 1) {
        var itemNames = ownerItems[ownerKey].join(', '); // Join item names into a comma-separated string
//gs.log("itemNames"+itemNames);
//gs.log("ownerKey"+ownerKey);
        gs.eventQueue('Catalog.item.owner.notification', gr, ownerKey, itemNames);
}
}

 

The above script is working as expected, currently I am separating catalog item by " , " instead of comma I wanted to separate the catalog item one by one like using bullet or number.
 
vinuthv_1-1695207744007.png

 

 
Please any one provide me the input,
 
Thanks in advance,
Vinuth
 
6 REPLIES 6

Ankur Bawiskar
Tera Patron
Tera Patron

@vinuth v 

do this

var gr = new GlideRecord('sc_cat_item');
gr.addQuery('active=true^u_cat_item_owner.active=true^u_cat_item_ownerISNOTEMPTY');
//gr.addQuery('active=true^u_cat_item_owner.active=true^u_cat_item_ownerISNOTEMPTY^nameSTARTSWITHRetire a Standard Change Template');
gr.query();

// Create an object to store item names grouped by owner
var ownerItems = {};

while (gr.next()) {
var owner = gr.u_cat_item_owner;
//gs.log("ownerowner"+owner);
// Check if the owner is defined
if (owner) {
var itemName = gr.name.toString();

// Initialize an array for the owner if it doesn't exist
if (!ownerItems[owner]) {
//gs.log("ownerItems56"+ownerItems[owner]);
ownerItems[owner] = [];
}

// Push the item name into the owner's array
ownerItems[owner].push('<li>'+itemName+'</li>'); // while pushing use the <li> and </li> tags which adds bullet
//gs.log("ownerItems62"+ownerItems[owner]);
}
}

// Send notifications to owners with more than one item
for (var ownerKey in ownerItems) {
//gs.log("ownerItems[ownerKey].length" + ownerItems[ownerKey].length);
if (ownerItems[ownerKey].length >= 1) {
var itemNames = ownerItems[ownerKey]; // don't join here
//gs.log("itemNames"+itemNames);
//gs.log("ownerKey"+ownerKey);
gs.eventQueue('Catalog.item.owner.notification', gr, ownerKey, itemNames);
}
}

If my response helped please mark it correct and close the thread so that it benefits future readers.

 

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

Hi @Ankur Bawiskar 

 

I used the below code

var gr = new GlideRecord('sc_cat_item');
gr.addQuery('active=true^u_cat_item_owner.active=true^u_cat_item_ownerISNOTEMPTY');
//gr.addQuery('active=true^u_cat_item_owner.active=true^u_cat_item_ownerISNOTEMPTY^nameSTARTSWITHRetire a Standard Change Template');
//gr.addQuery('sys_id','011f117a9f3002002920bde8132e7020');
gr.query();
 
// Create an object to store item names grouped by owner
var ownerItems = {};
 
while (gr.next()) {
    var owner = gr.u_cat_item_owner;
//gs.log("ownerowner"+owner);
    // Check if the owner is defined
    if (owner) {
        var itemName = gr.name.toString();
 
        // Initialize an array for the owner if it doesn't exist
        if (!ownerItems[owner]) {
//gs.log("ownerItems56"+ownerItems[owner]);
            ownerItems[owner] = [];
        }
 
        // Push the item name into the owner's array
//ownerItems[owner].push(itemName);
ownerItems[owner].push('<li>'+itemName+'</li>'); // while pushing use the <li> and </li> tags which adds bullet
//gs.log("ownerItems62"+ownerItems[owner]);
    }
}
 
// Send notifications to owners with more than one item
for (var ownerKey in ownerItems) {
//gs.log("ownerItems[ownerKey].length" + ownerItems[ownerKey].length);
    if (ownerItems[ownerKey].length >= 1) {
        //var itemNames = ownerItems[ownerKey].join(', '); // Join item names into a comma-separated string
var itemNames = ownerItems[ownerKey];
//gs.log("itemNames"+itemNames);
//gs.log("ownerKey"+ownerKey);
        gs.eventQueue('Catalog.item.owner.notification', gr, ownerKey, itemNames);
 
    }
}
 
But I am getting like this , please see the yellow color highlighted
vinuthv_0-1695209212783.png

 

Thanks,
Vinuth

@vinuth v 

share your email script?

are you using some extra logic in email script to print the data passed in event parm 2?

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Ankur Bawiskar 

Email notification,

vinuthv_0-1695209584490.png

 

Email script,

vinuthv_1-1695209619876.png

 

Thanks,

Vinuth