The CreatorCon Call for Content is officially open! Get started here.

Creating CSV file of records

AbhishekGardade
Giga Sage

We are filtering some records with gliderecord. Lets say we have two arrays 1. headers and Values as given below. How we can generate CSV Of with values? Currently I am able to add only Header and one ROW. When I am trying to insert second row , its getting added into only one column as below:

find_real_file.png

Here is the script

var csvAnswers = [];
var gr = new GlideRecord('alm_hardware');
gr.addQuery('sys_id','3cfba07d1b384010364d32a3cc4bcbca');
gr.query();
if(gr.next()){
var csvHeaders = ["First_name","last_name","location"];
var assetDetails1 = ["Steve","Rogers","LA"];
var assetDetails2 = ["Tony","Stark","New York"];
var fileName = 'Detail1.csv';

csvAnswers.push(assetDetails1);
csvAnswers.push(assetDetails2);

var csvData = ''; //The variable csvData will contain a string which is used to build the CSV file contents

for (var i = 0; i < csvHeaders.length - 1; i++) { //Build the Headers
csvData = csvData + '"' + csvHeaders[i] + '"' + ',';
}
csvData = csvData + '"' + csvHeaders[csvHeaders.length - 1] + '"' + '\r\n';
gs.log("csvHeaders :"+csvData);
for (var k = 0; k < csvAnswers.length-1; k++) {

for (var m = 0; k < csvAnswers[k][m].length-1 ; m++) {
gs.log("csvAnswers :"+csvAnswers[k][m]);
csvData = csvData + '"' + csvAnswers[k][m].toString() + '"' + ',';

}
csvData = csvData+"\n";
csvData = csvData + '"' + csvAnswers[csvAnswers.length - 1] + '"' + '\r\n';
}

// csvData = csvData + '"' + csvAnswers[csvAnswers.length - 1] + '"' + '\r\n';
gs.log(" csvData : "+csvData);

var sa = new GlideSysAttachment();
sa.write(gr, fileName, 'application/csv', csvData);
}

Whats modification need to be done ? How we can generate CSV Of records.

 

Thank you,
Abhishek Gardade
1 ACCEPTED SOLUTION

Can you try below script?

var csvAnswers = [];

var gr = new GlideRecord('alm_hardware');
gr.addQuery('sys_id','3cfba07d1b384010364d32a3cc4bcbca');
gr.query();
if(gr.next()){

var csvHeaders = ["First_name","last_name","location"];
var assetDetails1 = "Steve,Rogers,LA";
var assetDetails2 = "Tony,Stark,New York";
var fileName = 'Detail1.csv';

csvAnswers.push(assetDetails1.split(','));
csvAnswers.push(assetDetails2.split(','));

var csvData = ''; //The variable csvData will contain a string which is used to build the CSV file contents

for (var i = 0; i < csvHeaders.length - 1; i++) { //Build the Headers
csvData = csvData + '"' + csvHeaders[i] + '"' + ',';
}
csvData = csvData + '"' + csvHeaders[csvHeaders.length - 1] + '"' + '\r\n';
gs.log("csvHeaders :"+csvData);

 

for (var k = 0; k < csvAnswers.length; k++) {

for (var m = 0; m < csvAnswers[k].length; m++) {

gs.log("csvAnswers :"+m+'-'+csvAnswers[k].length);
if (m == (csvAnswers[k].length-1))
csvData = csvData + '"' + csvAnswers[k][m].toString() + '"';
else
csvData = csvData + '"' + csvAnswers[k][m].toString() + '"' + ',';

}
csvData = csvData+"\r\n";
//csvData = csvData + '"' + csvAnswers[csvAnswers.length - 1] + '"' + '\r\n';
}

// csvData = csvData + '"' + csvAnswers[csvAnswers.length - 1] + '"' + '\r\n';
gs.log(" csvData : "+csvData);

var sa = new GlideSysAttachment();
sa.write(gr, fileName, 'application/csv', csvData);
}


Please mark this response as correct or helpful if it assisted you with your question.

View solution in original post

7 REPLIES 7

Angshuman3
Mega Guru

Hi Abhishek,

Check the below link, this might help..!!

I was having something same in relation to your issue...

https://community.servicenow.com/community?id=community_blog&sys_id=e4f8bd4edbbc881014d6fb243996190e


Hope this helps.

Mark the answer as correct/helpful if you are satisfied.

Thanks,
Angshuman

I already tried that one. Its not working for me.

Thank you,
Abhishek Gardade

Can you try below script?

var csvAnswers = [];

var gr = new GlideRecord('alm_hardware');
gr.addQuery('sys_id','3cfba07d1b384010364d32a3cc4bcbca');
gr.query();
if(gr.next()){

var csvHeaders = ["First_name","last_name","location"];
var assetDetails1 = "Steve,Rogers,LA";
var assetDetails2 = "Tony,Stark,New York";
var fileName = 'Detail1.csv';

csvAnswers.push(assetDetails1.split(','));
csvAnswers.push(assetDetails2.split(','));

var csvData = ''; //The variable csvData will contain a string which is used to build the CSV file contents

for (var i = 0; i < csvHeaders.length - 1; i++) { //Build the Headers
csvData = csvData + '"' + csvHeaders[i] + '"' + ',';
}
csvData = csvData + '"' + csvHeaders[csvHeaders.length - 1] + '"' + '\r\n';
gs.log("csvHeaders :"+csvData);

 

for (var k = 0; k < csvAnswers.length; k++) {

for (var m = 0; m < csvAnswers[k].length; m++) {

gs.log("csvAnswers :"+m+'-'+csvAnswers[k].length);
if (m == (csvAnswers[k].length-1))
csvData = csvData + '"' + csvAnswers[k][m].toString() + '"';
else
csvData = csvData + '"' + csvAnswers[k][m].toString() + '"' + ',';

}
csvData = csvData+"\r\n";
//csvData = csvData + '"' + csvAnswers[csvAnswers.length - 1] + '"' + '\r\n';
}

// csvData = csvData + '"' + csvAnswers[csvAnswers.length - 1] + '"' + '\r\n';
gs.log(" csvData : "+csvData);

var sa = new GlideSysAttachment();
sa.write(gr, fileName, 'application/csv', csvData);
}


Please mark this response as correct or helpful if it assisted you with your question.

Thanks Sanjiv, It works perfectly!!!

Thank you,
Abhishek Gardade