Export specific fields as excel and attach on RITM

basavaraja
Tera Contributor

Hello Geeks,

 

We have a requirement where in we need to export few specific fields to excel and attach on RITM. Please let us know if anyone has implemented this requirement?

1 ACCEPTED SOLUTION

Hello,
Test this

 

(function executeRule(current, previous /*null when async*/ ) {
generateData();
function generateData() {
var headers = ["Requested ITEM", "Opened By", "Request"];
var fileName = current.number + '.xls';
var xlsData = '';

// add headers to xlsData
for (var i = 0; i < headers.length; i++) {
xlsData += headers[i] + '\t';
}
xlsData += '\n';

// add data to xlsData
xlsData += current.number + '\t' + current.opened_by.getDisplayValue() + '\t' + current.request.getDisplayValue() + '\n';

// attach the file to a record.
var grRec = new GlideRecord("sc_req_item");
grRec.addQuery("sys_id", current.sys_id);
grRec.query();
if (grRec.next()) {
var grAttachment = new GlideSysAttachment();
grAttachment.write(grRec, fileName, 'application/vnd.ms-excel', xlsData);
}
}
})(current, previous);

View solution in original post

13 REPLIES 13

Hi,
Can I see your code please

(function executeRule(current, previous /*null when async*/ ) {
generateData();
function generateData() {
var Headers = ["Requested ITEM","Opened By""Request"];
var fileName = 'current.number.xls';
var xlsData = '';
for (var i = 0; i < Headers.length; i++) {
xlsData = xlsData + '"' + Headers[i] + '"' + ',';
}
xlsData = xlsData + "\r\n";
xlsData = xlsData + '"' + current.number + '",' + '"' + current.opened_by.getDisplayValue() + '",' + '"' + current.request.getDisplayValue()+ '"';
xlsData = xlsData + "\r\n";

 

//attach the file to a record.
var grRec = new GlideRecord("sc_req_item");
grRec.addQuery("sys_id", current.sys_id);
grRec.query();
if (grRec.next()) {
var grAttachment = new GlideSysAttachment();
grAttachment.write(grRec, fileName, 'application/xls', xlsData);
}
}
})(current, previous);

Please try this one

(function executeRule(current, previous /*null when async*/ ) {
generateData();
function generateData() {
var Headers = ["Requested ITEM","Opened By""Request"];
var fileName = current.number+'.xls';
var xlsData = '';
for (var i = 0; i < Headers.length; i++) {
xlsData = xlsData + '"' + Headers[i] + '"' + ',';
}
xlsData = xlsData + "\r\n";
xlsData = xlsData + '"' + current.number + '",' + '"' + current.opened_by.getDisplayValue() + '",' + '"' + current.request.getDisplayValue()+ '"';
xlsData = xlsData + "\r\n";

 

//attach the file to a record.
var grRec = new GlideRecord("sc_req_item");
grRec.addQuery("sys_id", current.sys_id);
grRec.query();
if (grRec.next()) {
var grAttachment = new GlideSysAttachment();
grAttachment.write(grRec, fileName, 'application/xls', xlsData);
}
}
})(current, previous);

Hello Ansar,

 

Still all the fields are coming on one column. They should come in separate columns.

 

basavaraja_0-1675959170744.png

 

Hi,
Please try this

(function executeRule(current, previous /*null when async*/ ) {
generateData();
function generateData() {
var Headers = ["Requested ITEM","Opened By""Request"];
var fileName = current.number+'.csv';
var xlsData = '';
for (var i = 0; i < Headers.length; i++) {
xlsData = xlsData + '"' + Headers[i] + '"' + ',';
}
xlsData = xlsData + "\r\n";
xlsData = xlsData + '"' + current.number + '",' + '"' + current.opened_by.getDisplayValue() + '",' + '"' + current.request.getDisplayValue()+ '"';
xlsData = xlsData + "\r\n";

 

//attach the file to a record.
var grRec = new GlideRecord("sc_req_item");
grRec.addQuery("sys_id", current.sys_id);
grRec.query();
if (grRec.next()) {
var grAttachment = new GlideSysAttachment();
grAttachment.write(grRec, fileName, 'application/csv', xlsData);
}
}
})(current, previous);