Create a Custom Assistant Script

To view the output for this sample script, see Sample Custom Assistant Script.

Note:

This script sample uses the define function, which is required for an entry point script (a script you attach to a script record and deploy). You must use the require function if you want to copy the script into the SuiteScript Debugger and test it. For more information, see SuiteScript 2.x Global Objects.

The following sample creates an assistant with two steps. In the first one, you can select a new supervisor for the employee selected. The second step displays the selection and submits it.

          /**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 */
define(['N/ui/serverWidget'], function(serverWidget) {
    return {
        onRequest: function(context) {
            var assistant = serverWidget.createAssistant({
                title: 'New Supervisor',
                hideNavBar: true
            });
            var assignment = assistant.addStep({
                id: 'assignment',
                label: 'Select New Supervisor'
            });
            var review = assistant.addStep({
                id: 'review',
                label: 'Review and Submit'
            });

            var writeAssignment = function() {
                assistant.addField({
                    id: 'newsupervisor',
                    type: serverWidget.FieldType.SELECT,
                    label: 'Name',
                    source: 'employee'
                });
                assistant.addField({
                    id: 'assignedemployee',
                    type: serverWidget.FieldType.SELECT,
                    label: 'Employee',
                    source: 'employee'
                });
            }

            var writeReview = function() {
                var supervisor = assistant.addField({
                    id: 'newsupervisor',
                    type: serverWidget.FieldType.TEXT,
                    label: 'Name'
                });
                supervisor.defaultValue = context.request.parameters.inpt_newsupervisor;
                supervisor.updateDisplayType({
                    displayType: serverWidget.FieldDisplayType.INLINE
                });

                var employee = assistant.addField({
                    id: 'assignedemployee',
                    type: serverWidget.FieldType.TEXT,
                    label: 'Employee'});
                employee.defaultValue = context.request.parameters.inpt_assignedemployee;
                employee.updateDisplayType({
                    displayType: serverWidget.FieldDisplayType.INLINE
                });
            }

            var writeResult = function() {
                var supervisor = context.request.parameters.newsupervisor;
                var employee = context.request.parameters.assignedemployee;
                context.response.write('Supervisor: ' + supervisor + '\nEmployee: ' + employee);
            }

            var writeCancel = function() {
                context.response.write('Assistant was cancelled');
            }

            if (context.request.method === 'GET') //GET method means starting the assistant
            {
                writeAssignment();
                assistant.currentStep = assignment;
                context.response.writePage(assistant)
            } else //POST method - process step of the assistant
            {
                if (context.request.parameters.next === 'Finish') //Finish was clicked
                    writeResult();
                else if (context.request.parameters.cancel) //Cancel was clicked
                    writeCancel();
                else if (assistant.currentStep.stepNumber === 1) { //transition from step 1 to step 2
                    writeReview();
                    assistant.currentStep = assistant.getNextStep();
                    context.response.writePage(assistant);
                } else { //transition from step 2 back to step 1
                    writeAssignment();
                    assistant.currentStep = assistant.getNextStep();
                    context.response.writePage(assistant);
                }
            }
        }
    };
}); 

        

General Notices