Need to export csv file without header

Ajay Sharma2
Tera Guru

Hi Team,

Need to exort CSV file without headers in exported sheet,

Please help!

1 ACCEPTED SOLUTION

Following Scripted REST API will export all incident records.

It'll create an csv as an attachment to a record and the send it back.

(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {

    var tmpTableName = 'incident'; // name of table to create attachment
    var number = 'INC0000055'; // record number to create attachment
    var exportFileName = 'example.csv';  // name of temporary attachment file
    var contentType = 'text/csv';

	var exportTableName = 'incident';
    var columnNames = ['sys_id', 'number', 'assigned_to.name'];  // names of columns to export

    try {
        // insert attachment
        var attachment = new GlideSysAttachment();
        var grTable = new GlideRecord(tmpTableName);
        if (grTable.get('number', number)) {
            var attachmentSysId = grTable.sys_id;

            var rec = new GlideRecord(tmpTableName);
            rec.get(attachmentSysId);
            var content = getRecords();
            var agr = attachment.write(rec, exportFileName, contentType, content);

            // get attachment and send back to user
            var grAttachRead = new GlideRecord('sys_attachment');
            grAttachRead.addQuery('table_sys_id', grTable.sys_id);
            grAttachRead.addQuery('file_name', exportFileName);
            grAttachRead.query();
            if (grAttachRead.hasNext()) {
                var count = 0;

                var hdrs = {},
                    attachment_sys_id = exportFileName;

                hdrs['Content-Type'] = contentType;
                response.setStatus(200);
                response.setHeaders(hdrs);

                if (grAttachRead.next()) {
                    var writer = response.getStreamWriter();
                    var attachmentStream = new GlideSysAttachmentInputStream(grAttachRead.sys_id);
                    writer.writeStream(attachmentStream);
                }
            }

            // delete temporary attachment file from record
            var grAttachDelete = new GlideSysAttachment();
            grAttachDelete.deleteAttachment(grAttachRead.sys_id);
        }
    } catch (e) {
        gs.error("ERROR=", e);
        return {
            'error': e.message
        };
    }

    // function to return records to export in csv
    function getRecords() {
        var records = [];
        var grInc = new GlideRecord(exportTableName);
        grInc.query();
        while (grInc.next()) {
            var columnValue = [];
            columnNames.forEach(function(name) {
                columnValue.push(grInc.getElement(name).toString());
            });
            records.push(columnValue.join(','));
        }
        return records.join('\n');
    }
})(request, response);

 

curl script sample

curl "https://<service instance name>.service-now.com/api/<servicenow instance number>/exportcsv" \
--request GET \
--header "Accept:text/csv" \
--user '<user name>':'<password>' \
--output <csv file name>.csv

View solution in original post

13 REPLIES 13

Ankur Bawiskar
Tera Patron
Tera Patron

@Ajay Sharma 

Is this for normal csv export of table data or for Export set functionality?

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

Hi Ankur,

It is normal CSV export

I came across a similar requirement, to get the value for owner header from csv file using script... So please help me with that.... It's urgent

Hitoshi Ozawa
Giga Sage
Giga Sage

<instance name>.do?CSV would export the header also.

Generating a csv without a header is possible by writing a Scripted REST API.