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.createTable({
            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.createDataMeasure({
            label: 'M',
            expression: idExpr,
            aggregation: wb.Aggregation.MAX
         });
         var columnSection = wb.createSection({
            children: [columnDataDimension, columnMeasure]
         });
         var constExpr = wb.createConstant(1);
         var anyOfExpr = wb.createExpression({
            functionId: wb.ExpressionType.ANY_OF,
            parameters: {
               expression: idExpr,
               set: [constExpr]
            }
         });
         var notExpr = wb.createExpression({
            functionId: wb.ExpressionType.NOT,
            parameters: {
               expression: anyOfExpr
            }
         });
         var allSubNodesSelector = wb.DescendantOrSelfNodesSelector;
         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.createSortByDataDimensionItem({
            item: rowItem,
            sort: sort
         });
         var columnSort = wb.createSortByMeasure({
            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,
            rowSelector: rowSelector,
            columnSelector: columnSelector,
            measure: columnMeasure,
            predicate: notExpr
         });
         var pivot = wb.createPivot({
            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.createChart({
            id: 'chart',
            name: 'Chart',
            dataset: dataset,
            category: category,
            legend: legend,
            series: [series]
         });
         var workbook = wb.create({
            description: 'My Test Workbook',
            name: 'Test Workbook',
            tables: [tableview],
            pivots: [pivot],
            charts: [chart]
         });
         context.workbook = workbook;
      }
   });
}); 

        

Related Topics

General Notices