Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

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);