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