Delete records from netsuite using Map reduce script

get the file from file cabinet

/**

 * @NApiVersion 2.1

 * @NScriptType MapReduceScript

 */

define([‘N/record’, ‘N/search’,‘N/file’],

    /**

 * @param{record} record

 * @param{search} search

 */

    (record, search, file) => {

        /**

         * Defines the function that is executed at the beginning of the map/reduce process and generates the input data.

         * @param {Object} inputContext

         * @param {boolean} inputContext.isRestarted – Indicates whether the current invocation of this function is the first

         *     invocation (if true, the current invocation is not the first invocation and this function has been restarted)

         * @param {Object} inputContext.ObjectRef – Object that references the input data

         * @typedef {Object} ObjectRef

         * @property {string|number} ObjectRef.id – Internal ID of the record instance that contains the input data

         * @property {string} ObjectRef.type – Type of the record instance that contains the input data

         * @returns {Array|Object|Search|ObjectRef|File|Query} The input data to use in the map/reduce process

         * @since 2015.2

         */

        const getInputData = (inputContext) => {

            try {

                log.debug(“In get input data”)

                let csvFile = file.load({

                    id: 16000

                });

                let fileContents = csvFile.getContents();

                let lines = fileContents.split(/r?n/);

                log.debug(“Lines ****”, lines);

                // Remove the header line

                lines.shift();

                let data = lines.map(line => {

                    let fields = line.split(‘,’);

                    if (fields.length >= 2) { // Check if fields array has enough elements

                        return {

                            recordid: fields[0].trim(),

                            recordtype: fields[1].trim(),

                        };

                    }

                    else {

                        // Handle the case where the line does not have enough fields

                        log.error(`Invalid line format: ${line}`);

                        return null; // or handle differently as per your requirement

                    }

                }).filter(obj => obj !== null); // Remove null objects

                log.debug(“Data”, data);

                return data;

            } catch (e) {

                log.error(“error@getinput data”, e);

            }

        }

        /**

         * Defines the function that is executed when the map entry point is triggered. This entry point is triggered automatically

         * when the associated getInputData stage is complete. This function is applied to each key-value pair in the provided

         * context.

         * @param {Object} mapContext – Data collection containing the key-value pairs to process in the map stage. This parameter

         *     is provided automatically based on the results of the getInputData stage.

         * @param {Iterator} mapContext.errors – Serialized errors that were thrown during previous attempts to execute the map

         *     function on the current key-value pair

         * @param {number} mapContext.executionNo – Number of times the map function has been executed on the current key-value

         *     pair

         * @param {boolean} mapContext.isRestarted – Indicates whether the current invocation of this function is the first

         *     invocation (if true, the current invocation is not the first invocation and this function has been restarted)

         * @param {string} mapContext.key – Key to be processed during the map stage

         * @param {string} mapContext.value – Value to be processed during the map stage

         * @since 2015.2

         */

        const map = (mapContext) => {

            try {

                let inputData = JSON.parse(mapContext.value);

               

                const { recordid, recordtype } = inputData;

                let recId = record.delete({

                    type: recordtype,

                    id: recordid

                });

       

                log.debug(“Record deleted successfully”, recId);

            } catch (e) {

                log.error(“Error in map function”, e);

            }

        }

        /**

         * Defines the function that is executed when the reduce entry point is triggered. This entry point is triggered

         * automatically when the associated map stage is complete. This function is applied to each group in the provided context.

         * @param {Object} reduceContext – Data collection containing the groups to process in the reduce stage. This parameter is

         *     provided automatically based on the results of the map stage.

         * @param {Iterator} reduceContext.errors – Serialized errors that were thrown during previous attempts to execute the

         *     reduce function on the current group

         * @param {number} reduceContext.executionNo – Number of times the reduce function has been executed on the current group

         * @param {boolean} reduceContext.isRestarted – Indicates whether the current invocation of this function is the first

         *     invocation (if true, the current invocation is not the first invocation and this function has been restarted)

         * @param {string} reduceContext.key – Key to be processed during the reduce stage

         * @param {List<String>} reduceContext.values – All values associated with a unique key that was passed to the reduce stage

         *     for processing

         * @since 2015.2

         */

        const reduce = (reduceContext) => {

        }

        /**

         * Defines the function that is executed when the summarize entry point is triggered. This entry point is triggered

         * automatically when the associated reduce stage is complete. This function is applied to the entire result set.

         * @param {Object} summaryContext – Statistics about the execution of a map/reduce script

         * @param {number} summaryContext.concurrency – Maximum concurrency number when executing parallel tasks for the map/reduce

         *     script

         * @param {Date} summaryContext.dateCreated – The date and time when the map/reduce script began running

         * @param {boolean} summaryContext.isRestarted – Indicates whether the current invocation of this function is the first

         *     invocation (if true, the current invocation is not the first invocation and this function has been restarted)

         * @param {Iterator} summaryContext.output – Serialized keys and values that were saved as output during the reduce stage

         * @param {number} summaryContext.seconds – Total seconds elapsed when running the map/reduce script

         * @param {number} summaryContext.usage – Total number of governance usage units consumed when running the map/reduce

         *     script

         * @param {number} summaryContext.yields – Total number of yields when running the map/reduce script

         * @param {Object} summaryContext.inputSummary – Statistics about the input stage

         * @param {Object} summaryContext.mapSummary – Statistics about the map stage

         * @param {Object} summaryContext.reduceSummary – Statistics about the reduce stage

         * @since 2015.2

         */

        const summarize = (summaryContext) => {

        }

        return { getInputData, map, reduce, summarize }

    });

Leave a comment

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