Email Template - Mail script table sort order by field value

HP8
Giga Guru

Hi all,

 

I have a mail script which generates a table based on field values which works. The thing I am struggling with is trying to make a sort order from A-Z based on the value of a field (in this case - u_change_type). 

 

Is this achievable?

 

Mail script code:

var tblHeader = "<table style='width: 100%; border-collapse: collapse; border-style: solid; border-color: #000000; font-family: calibri; font-size: 11pt;' border='1'><tr><td><b>Release Type</b></td><td><b>Number</b></td><td><b>Short Description</b></td></tr>";
var tblChange = '';
var grRel = new GlideRecord('u_m2m_release_change');
grRel.addQuery('u_release', current.getUniqueValue());
grRel.query();
while(grRel.next()){
	var grChange = new GlideRecord('change_request');
	grChange.addQuery('sys_id', grRel.u_change_request);
	grChange.query();
	if(grChange.next()){
		tblChange += "<tr><td>"+ grChange.u_change_type +"</td><td>"+ grChange.number +"</td><td>"+ grChange.short_description + "</td></tr>";
	}
}
if(tblChange){
	template.print(tblHeader + tblChange + "</table>");
}

 

1 REPLY 1

Sonam Tiwari
Tera Guru

Hi @HP8 ,



Can you try this modified script.

 

 

var chg_array=[];

var tblHeader = "<table style='width: 100%; border-collapse: collapse; border-style: solid; border-color: #000000; font-family: calibri; font-size: 11pt;' border='1'><tr><td><b>Release Type</b></td><td><b>Number</b></td><td><b>Short Description</b></td></tr>";
var tblChange = '';
var grRel = new GlideRecord('u_m2m_release_change');
grRel.addQuery('u_release', current.getUniqueValue());
grRel.query();
while(grRel.next()){
	var grChange = new GlideRecord('change_request');
	grChange.addQuery('sys_id', grRel.u_change_request);
	grChange.query();
	if(grChange.next()){
		chg_array.push({
            type: grChange.u_change_type.toString(), // Convert to string for proper sorting
            number: grChange.number.toString(),
            description: grChange.short_description.toString()
        });	
}
}

chg_array.sort(function(a, b) {
    return a.type.localeCompare(b.type);
});

for (var i = 0; i < chg_array.length; i++) {
    tblChange += "<tr><td>" + chg_array[i].type + "</td><td>" + chg_array[i].number + "</td><td>" + chg_array[i].description + "</td></tr>";
}
if(tblChange){
	template.print(tblHeader + tblChange + "</table>");
}

 

 


Hope this helps.