Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

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.