Send an RITM data to email using excel format
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
6 hours ago
Hi,
my query is, i need to send an email to the user every month 1st. that email contains last month RITM's and few additional field in excel format. below script i written but not worked. created event and notification and the table is sys_user.
schedule job:
var ritminfo = gs.getProperty("ritm.monthly_report");
var reqItemGR = new GlideRecord('sc_req_item');
reqItemGR.addEncodedQuery(ritminfo);
reqItemGR.query();
var ritmDetailsArray = [];
var recipients = [];
while (reqItemGR.next()) {
var financialApprovers =
reqItemGR.variables.financial_approvers + '';
// Collect unique recipients
if (financialApprovers) {
var approverList = financialApprovers.split(',');
for (var i = 0; i < approverList.length; i++) {
var approver = approverList[i].trim();
if (approver && recipients.indexOf(approver) == -1) {
recipients.push(approver);
}
}
}
// Store RITM information
ritmDetailsArray.push({
number: reqItemGR.getValue('number'),
requested_for: reqItemGR.getDisplayValue('requested_for'),
created: reqItemGR.getValue('sys_created_on'),
approval: reqItemGR.getDisplayValue('approval'),
created_by: reqItemGR.getValue('sys_created_by')
});
}
// Trigger only ONE event
if (ritmDetailsArray.length > 0) {
gs.eventQueue(
'monthly.report',
reqItemGR,
recipients.join(','),
JSON.stringify(ritmDetailsArray)
);
}
email script:
(function runMailScript(current, template, email, email_action, event) {
var recipients = event.parm1 + '';
var ritmInfo = [];
try {
ritmInfo = JSON.parse(event.parm2 + '');
} catch (e) {
gs.error('JSON Parse Error: ' + e.message);
return;
}
function escapeCSV(value) {
if (value === null || value === undefined)
return '""';
value = String(value);
return '"' + value.replace(/"/g, '""') + '"';
}
var headers = [
"Number",
"Requested For",
"Created",
"Approval",
"Created By"
];
var csvData = headers.map(escapeCSV).join(',') + '\r\n';
for (var i = 0; i < ritmInfo.length; i++) {
csvData += [
ritmInfo[i].number,
ritmInfo[i].requested_for,
ritmInfo[i].created,
ritmInfo[i].approval,
ritmInfo[i].created_by
].map(escapeCSV).join(',') + '\r\n';
}
email.setTo(recipients);
var emailSysId = email.getSysID();
if (emailSysId) {
var gsa = new GlideSysAttachment();
gsa.write(
'sys_email',
emailSysId,
'Monthly_RITM_Report.csv',
'text/csv',
csvData
);
gs.info('CSV attached to email: ' + emailSysId);
}
})(current, template, email, email_action, event);
0 REPLIES 0