Creating a Workbook Builder Plug-in Script File

You must implement each Workbook Builder Plug-in interface function in a JavaScript file (with a .js extension). You can use SuiteCloud IDE, another JavaScript IDE, or a text editor to create the plug-in implementation script file.

The following is a Workbook Builder Plug-in sample:

          /**
 * @NApiVersion 2.x
 * @NScriptType workbookbuilderplugin
 */
define(['N/workbook', 'N/dataset'], function(wb, ds) {
    return Object.freeze({
        createWorkbook: function(context) {
            var dataset = ds.load({
                id: 'customscript_dataset'
            });

            var idExpr = dataset.getExpressionFromColumn({
                alias: 'id'
            });
            var sort = wb.createSort({
                ascending: false
            });

            var col1 = wb.createTableColumn({
                datasetColumnAlias: 'id'
            });
            var col2 = wb.createTableColumn({
                datasetColumnAlias: 'name'
            });
            var col3 = wb.createTableColumn({
                datasetColumnAlias: 'date'
            });
            var col4 = wb.createTableColumn({
                datasetColumnAlias: 'total'
            });
            var tableview = wb.createTableDefinition({
                id: 'view',
                name: 'View',
                dataset: dataset,
                columns: [col1, col2, col3, col4]
            });

            var rowItem = wb.createDataDimensionItem({
                label: 'A',
                expression: dataset.getExpressionFromColumn({
                    alias: 'date'
                })
            });

            var rowDataDimension = wb.createDataDimension({
                items: [rowItem]
            });

            var rowSection = wb.createSection({
                children: [rowDataDimension]
            });

            var columnItem = wb.createDataDimensionItem({
                label: 'B',
                expression: dataset.getExpressionFromColumn({
                    alias: 'total'
                })
            });

            var columnDataDimension = wb.createDataDimension({
                items: [columnItem]
            });

            var columnMeasure = wb.createMeasure({
                label: 'M',
                expression: idExpr,
                aggregation: workbook.Aggregation.MAX
            });
 
            var columnSection = wb.createSection({
                children: [columnDataDimension, columnMeasure]
            });

            var constExpr = wb.createConstant(1);
            var anyOfExpr = wb.createExpression({
                functionId: workbook.ExpressionType.ANY_OF,
                parameters: {
                    expression: idExpr,
                    set: [constExpr]
                }
            });
            var notExpr = wb.createExpression({
                functionId: workbook.ExpressionType.NOT,
                parameters: {
                    a: anyOfExpr
                }
            });

            var allSubNodesSelector = wb.createAllSubNodesSelector();
            var rowItemSelector = wb.createDimensionSelector({
                dimension: rowDataDimension
            });
            var columnItemSelector = wb.createDimensionSelector({
                dimension: columnDataDimension
            });

            var rowSelector = wb.createPathSelector({
                elements: [allSubNodesSelector, rowItemSelector]
            });
            var columnSelector = wb.createPathSelector({
                elements: [allSubNodesSelector, columnItemSelector]
            });

            var rowSort = wb.createDimensionSort({
                item: rowItem, sort:sort
            });

            var columnSort = wb.createMeasureSort({
                measure: columnMeasure,
                sort: sort,
                otherAxisSelector: allSubNodesSelector
            });

            var rowSortDefinition = wb.createSortDefinition({
                sortBys: [rowSort],
                selector: rowSelector
            });

            var columnSortDefinition = wb.createSortDefinition({
                sortBys: [columnSort],
                selector: columnSelector
            });

            var rowAxis = wb.createPivotAxis({
                root: rowSection,
                sortDefinitions: [rowSortDefinition]
            });

            var columnAxis = wb.createPivotAxis({
                root: columnSection,
                sortDefinitions: [columnSortDefinition]
            });

            var limitingFilter = wb.createLimitingFilter({
                row: true,
                filteredNodesSelector: rowSelector,
                limit: 1,
                sortBys: [rowSort]
            });

            var conditionalFilter = wb.createConditionalFilter({
                row: false,
                filteredNodesSelector: rowSelector,
                otherAxisSelector: columnSelector,
                measure: columnMeasure,
                predicate: notExpr
            });

            var pivot = wb.createPivotDefinition({
                id: 'pivot',
                name: 'Pivot',
                dataset: dataset,
                rowAxis: rowAxis,
                columnAxis: columnAxis,
                filterExpressions: [notExpr],
                aggregationFilters: [limitingFilter, conditionalFilter]
            });

            var firstAxis = wb.createChartAxis({
                title: 'First axis'
            });
            var secondAxis = wb.createChartAxis({
                title: 'Second axis'
            });

            var category = wb.createCategory({
                axis: firstAxis,
                root: rowSection
            });
            var legend = wb.createLegend({
                axes: [secondAxis],
                root: columnSection
            });
            var aspect = wb.createAspect({
                measure: columnMeasure
            });
            var series = wb.createSeries({
                aspects: [aspect]
            });

            var chart = wb.createChartDefinition({
                id: 'chart',
                name: 'Chart',
                dataset: dataset,
                category: category,
                legend: legend,
                series: [series]
            });

            var workbook = wb.create({
                description: 'My Test Workbook',
                name: 'Test Workbook',
                tableDefinitions: [tableview],
                pivotDefinitions: [pivot],
                chartDefinitions: [chart]
            });

            context.workbook = workbook;
        }
    });
}); 

        

Related Topics

Developing a Workbook Builder Plug-in
Enabling Features for a Workbook Builder Plug-in
Guidelines for Creating a Workbook Builder Plug-in Implementation Script File

General Notices