Email Template - Mail script table sort order by field value
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-28-2023 03:45 PM
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
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-28-2023 05:18 PM - edited 08-28-2023 05:19 PM
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.