Use PDIs? Take our 5-minute survey to help shape the PDI roadmap.

Send an RITM data to email using excel format

Lakshmi53
Tera Contributor

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