Create a CSV file, save, load and parse the CSV contents using suiteScript

Solution

require(['N/file', 'N/error', 'N/log'], function (file, error, log) {
    // This sample calculates the total for the
    // second column value in a CSV file.
    //
    // Each line in the CSV file has the following format:
    // date,amount
    //
    // Here is the data that the script adds to the file:
    // 10/21/14,200.0
    // 10/21/15,210.2
    // 10/21/16,250.3

    // Create the CSV file
    var csvFile = file.create({
        name: 'data.csv',
        contents: 'date,amount\n',
        folder: 39,
        fileType: 'CSV'
    });

    // Add the data
    csvFile.appendLine({
        value: '10/21/14,200.0'
    });
    csvFile.appendLine({
        value: '10/21/15,210.2'
    });
    csvFile.appendLine({
        value: '10/21/16,250.3'
    });

    // Save the file
    var csvFileId = csvFile.save();

    // Create a variable to store the calculated total
    var total = 0.0;

    // Load the file
    var invoiceFile = file.load({
        id: csvFileId
    });

    // Obtain an iterator to process each line in the file
    var iterator = invoiceFile.lines.iterator();

    // Skip the first line, which is the CSV header line
    iterator.each(function () {return false;});

    // Process each line in the file
    iterator.each(function (line) {
        // Update the total based on the line value
        var lineValues = line.value.split(',');
        var lineAmount = parseFloat(lineValues[1]);
        if (!lineAmount) {
            throw error.create({
                name: 'INVALID_INVOICE_FILE',
                message: 'Invoice file contained non-numeric value for total: ' + lineValues[1]
            });

            total += lineAmount;
            return true;
        }
    });

    // At this point, the total is 660.5
    log.debug({
        title: 'total',
        details: total
    });
});

Leave a comment

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