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

Devi20
Kilo Explorer

Hi All,

I did script the same way and I have a similar fix script.

Is there any possibility to convert this to Script Include and add style/formatting like making text/header bold.

Adding colours.

If so, could you please let me know on how to do it.

My script as follows:

 

function copyApplicationfiles(gr) {

output("\n APPLICATION FILES");
var classname = '';
var records = [];
var sno = 1;
var sdescription = '';
var namearr ='';
while (gr.next()) {
var str = String(gr.sys_update_name);
var rest = str.substring(0, str.lastIndexOf("_") + 1).slice(0, -1);
var last = str.substring(str.lastIndexOf("_") + 1, str.length);
sdescription = '';
if (last.length == 32 && gr.sys_class_name.getDisplayValue() != "Form") {
var tab = new GlideRecord(rest);
//gs.info("rest" +rest);
//gs.info("last"+last);
if (tab.get('sys_id', last)) {
if (tab.short_description !== undefined) {


var myString =tab.short_description ;
mystring.replace(/,/g,"; "); // Replace the commas with semi-colon-space
mystring.split(",").join("; ");

//sdescription = tab.short_description;

}
}
}
if (gr.sys_class_name != classname) {

classname = String(gr.sys_class_name);
sno = 1;
output("_______________________________________________________________________________\n");
output("Class Name: "+ gr.sys_class_name.getDisplayValue());
output("S.NO"+'\t'+"NAME" + '\t' + "CLASS NAME" +'\t' + "SHORT DESCRIPTION" + '\t' + "CREATED BY" );
}

output(sno + '\t' + gr.sys_name + '\t' + gr.sys_class_name.getDisplayValue() + '\t' + mystring + '\t' + gr.sys_created_by);
sno++;

}

}

function download(filename, data) {
var blankInc = new GlideRecord("ecc_queue");
blankInc.agent = "Background Script";
blankInc.topic = "Output: " + filename;
blankInc.name = filename;
blankInc.source = "Application files";
blankInc.insert();
// Replace /t with ,
data = data.replace(/\t/g, ',');
var attachment = new Attachment();
var attachmentRec = attachment.write("ecc_queue", blankInc.sys_id.toString(), filename, "text/csv", data);
var attachRec = new GlideRecord("sys_attachment");
attachRec.addQuery("table_sys_id", blankInc.sys_id.toString());
attachRec.addQuery("file_name", filename);
attachRec.query();
attachRec.next();
var url = "/sys_attachment.do?sys_id=" + attachRec.sys_id.toString() + "&view=true";
gs.print("\n\n");
gs.print("\n\n");
gs.setRedirect(url);
//blankInc.deleteRecord();
}

function output(str) {
fileoutputstr += str + '\n';
}

var fileoutputstr = "";

var appID = '18351d53eb32120034d1eeea1206fe79';
var gr = new GlideRecord("sys_metadata");
gr.addQuery('sys_scope', appID);
gr.orderBy('sys_class_name');
gr.query();
while (gr.next()) {

output("APPLICATION NAME :" + gr.sys_scope.name);

copyApplicationfiles(gr);
download('ApplicationFiles_output.csv', fileoutputstr);
}

Thanks,

Bhavani

 

Dwarka00007
Tera Contributor

@SanjivMeher will this work fine if my data has "," in it?

It should..You need to try it out


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