* Suitescript 2.0 *如何从Map Reduce脚本更新自定义记录的状态?

时间:2016-11-28 22:01:27

标签: netsuite suitescript

所以我想要做的就是如果m / r脚本失败,请从m / r脚本更新自定义记录上相应的下拉列表值。

如何在SuiteScript 2.0中执行此操作

1 个答案:

答案 0 :(得分:1)

您可以使用摘要步骤来获取Map Reduce脚本中发生的错误。以下代码可以帮助您实现此目的:

function summarize(summary) {
    handleErrors(summary);
    handleSummaryOutput(summary.output);

    //*********** HELPER FUNCTIONS ***********

    function handleErrors(summary) {
        var errorsArray = getErrorsArray(summary);
        if(!errorsArray || !errorsArray.length){
            log.debug('No errors encountered');
            return;
        }

        for (var i in errorsArray) {
            log.error('Error ' + i, errorsArray[i]);
        }

        if(errorsArray && errorsArray.length){
            //
            //INSERT YOUR CODE HERE
            //
        }

        return errorsArray;

        //*********** HELPER FUNCTIONS ***********
        function getErrorsArray(summary){
            var errorsArray = [];

            if (summary.inputSummary.error){
                log.audit('Input Error', summary.inputSummary.error);
                errorsArray.push('Input Error | MSG: ' + summary.inputSummary.error);
            }

            summary.mapSummary.errors.iterator().each(function (key, e){
                var errorString = getErrorString(e);
                log.audit('Map Error', 'KEY: ' + key + ' | ERROR: ' + errorString);
                errorsArray.push('Map Error | KEY: ' + key + ' | ERROR: ' + errorString);
                return true; //Must return true to keep looping
            });

            summary.reduceSummary.errors.iterator().each(function (key, e){
                var errorString = getErrorString(e);
                log.audit('Reduce Error', 'KEY: ' + key + ' | MSG: ' + errorString);
                errorsArray.push('Reduce Error | KEY: ' + key + ' | MSG: ' + errorString);
                return true; //Must return true to keep looping
            });

            return errorsArray;

            //*********** HELPER FUNCTIONS ***********
            function getErrorString(e){
                var errorString = '';
                var errorObj = JSON.parse(e);
                if (errorObj.type == 'error.SuiteScriptError' || errorObj.type == 'error.UserEventError'){
                    errorString = errorObj.name + ': ' + errorObj.message;
                } else {
                    errorString = e;
                }
                return errorString;
            }
        }
    }

    function handleSummaryOutput(output){
        var contents = '';
        output.iterator().each(function (key, value){
            contents += (key + ' ' + value + '\n');
            return true;
        });
        if(contents){
            log.debug('output', contents);
        }
    }
}