Create dynamic CSV files from saved search

This code snippet will help you create a dynamic CSV file from the search. the search is created in NetSuite we have loaded results from NetSuite using loading search.

/**
 * @NApiVersion 2.1
 * @NScriptType workflowactionscript
 */

define(['N/search', 'N/record', 'N/encode', 'N/file'], function (search, record, encode, file) {
    function onAction(scriptContext) {
        try {
            var new_record = scriptContext.newRecord;
            var ifRecId = new_record.id;
            var ifTranID = new_record.getValue({ fieldId: 'tranid' });
            var courierSelectId = new_record.getValue({ fieldId: 'custbody_shipping_courier_select' });
            log.debug("courierSelectId", courierSelectId);
            if (courierSelectId) {
                var courierCheckResult = courierCheck(courierSelectId)
                log.debug("courierCheckResult", courierCheckResult);
                if (courierCheckResult == 20474) {
                    var fileName = 'dpd-' + ifTranID + '.csv';
                    var resultObject = searchIfCSV(ifRecId);
                    var fileObj = file.create({ name: fileName, fileType: file.Type.CSV, contents: resultObject, encoding: file.Encoding.UTF8, folder: 3582790 });
                    var fileId = fileObj.save();
                    log.debug("fileId", fileId);
                    new_record.setValue({ fieldId: 'custbody_tntfile', value: fileId, ignoreFieldChange: true });
                }
            }


        } catch (error) {
            log.debug('ERROR @ onAction', error);
        }
    }

    function courierCheck(courierSelectId) {
        try {
            var courierType = null;
            var customrecord_shipping_listSearchObj = search.create({
                type: "customrecord_shipping_list",
                filters:
                    [
                        ["internalid", "anyof", courierSelectId]
                    ],
                columns:
                    [
                        search.createColumn({ name: "custrecord_shipping_courier", label: "Courier" })
                    ]
            });
            var searchResultCount = customrecord_shipping_listSearchObj.runPaged().count;
            log.debug("customrecord_shipping_listSearchObj result count", searchResultCount);
            if (searchResultCount != 0) {
                customrecord_shipping_listSearchObj.run().each(function (result) {
                    courierType = result.getValue({ name: "custrecord_shipping_courier", label: "Courier" }) || '';
                    return true;
                });

                return courierType
            } else {
                return false
            }


        } catch (error) {
            log.debug('courierCheck @ onAction', error);
        }
    }

    function searchIfCSV(ifRecId) {
        try {
            var itemfulfillmentSearchObj = search.load({
                id: 'customsearch_item_fulfilment_for_dpd'
            });
            var filters = itemfulfillmentSearchObj.filters; //reference Search.filters object to a new variable
            var custFilter = search.createFilter({ //create new filter
                name: 'internalid',
                operator: search.Operator.ANYOF,
                values: ifRecId
            });
            filters.push(custFilter); //add the filter using .push() method
            log.debug('itemfulfillmentSearchObj', itemfulfillmentSearchObj)
            var headArray = [];
            for (var i = 0; i < itemfulfillmentSearchObj.columns.length; i++) {
                headArray.push(itemfulfillmentSearchObj.columns[i].label)
            }
            log.debug('headArray', headArray)
            var csvFile = headArray.toString() + '\r\n';

            log.debug('csvFile', csvFile)

            var searchResultCount = itemfulfillmentSearchObj.runPaged().count;
            itemfulfillmentSearchObj.run().each(function (result) {
                for (var i = 0; i < itemfulfillmentSearchObj.columns.length; i++) {
                    csvFile += (('"'+ (result.getText(itemfulfillmentSearchObj.columns[i]) || result.getValue(itemfulfillmentSearchObj.columns[i]))+'"').replace(',',''));
                    csvFile += ',';
                }
              csvFile += '\r\n';
                return true;
            });
            log.debug('csvFile', csvFile)
            return csvFile;
        } catch (error) {
            log.debug('ERROR @ searchIfCSV', error);
        }

    }


    return {
        onAction: onAction
    }
});

Leave a comment

Your email address will not be published. Required fields are marked *