本文介绍了NetSuite套件的JavaScript健全性检查的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

目前,我有一个NetSuite SuiteScript,我可以在其中将保存的搜索导出到CSV。它可以运行,但不能重复使用,我想通过只添加键-值对来使其更容易。我有很多复制粘贴,很容易忘记更新到最新的迭代运行。这是计划的搜索,这意味着它每15分钟运行一次,因此很难进行调试和测试。

现在,我的代码看起来是这样的,但随着搜索的增加,这是一种痛苦,无法重复使用。

/**
* @NApiVersion 2.x
* @NScriptType ScheduledScript
* @NModuleScope SameAccount
*/

define(['N/task'],
/**
* @param {record} record
* @param {search} search
*/

function(task) {

var FILE_ID = 2992639; 
var SEARCH_ID = 2993;

function execute(scriptContext) {
    //first search
    var searchTask1 = task.create({
        taskType: task.TaskType.SEARCH
    });

    searchTask1.savedSearchId = SEARCH_ID;
    searchTask1.fileId = FILE_ID;
    var searchTaskId1 = searchTask1.submit();
    
    //next search
    FILE_ID = 2992640;
    SEARCH_ID = 3326;
    var searchTask2 = task.create({
        taskType: task.TaskType.SEARCH
    });

    searchTask2.savedSearchId = SEARCH_ID;
    searchTask2.fileId = FILE_ID;
    var searchTaskId2 = searchTask2.submit();
    
        //next search
    FILE_ID = 2992634;
    SEARCH_ID = 3327;
    var searchTask3 = task.create({
        taskType: task.TaskType.SEARCH
    });

    searchTask3.savedSearchId = SEARCH_ID;
    searchTask3.fileId = FILE_ID;
    var searchTaskId3 = searchTask3.submit();
    
    //this pattern repeats 19 times total. 

}

return {
    execute: execute
};
});

我已尝试在下面编写代码

/**
* @NApiVersion 2.x
* @NScriptType ScheduledScript
* @NModuleScope SameAccount
*/

define(['N/task'],
/**
* @param {record} record
* @param {search} search
*/

function(task) {

    const searchList = {
        2993:2992639,
        3326:2992640,
        3327:2992634
    };

    function execute(scriptContext) {
        for (const [key, value] of Object.entries(searchList)) {
            var searchTask = task.create({
                taskType: task.TaskType.SEARCH
            });

            searchTask.savedSearchId = $key;
            searchTask.fileId = $value;
            var searchTaskId = searchTask.submit();
        }
    }

    return {
        execute: execute
    };
});
但是会出现以下错误,并且我不确定我的语法有什么问题。NetSuite让人很难判断我做错了什么,所以我希望有人能在这里帮助我。谢谢!

{"type":"error.SuiteScriptError","name":"SSS_MISSING_REQD_ARGUMENT","message":"task.submit: Missing a required argument: SearchTask.savedSearchId","stack":["createError(N/error)","execute(/SuiteScripts/dashboardreports.js:224)","createError(N/error)"],"cause":{"name":"SSS_MISSING_REQD_ARGUMENT","message":"task.submit: Missing a required argument: SearchTask.savedSearchId"},"id":"","notifyOff":false,"userFacing":true}

推荐答案

我会使用自定义记录来存储搜索和文件ID,这样您就可以在不修改代码的情况下添加/更新。然后,我将执行类似以下代码的操作。此代码首先查询您的自定义记录以获取所有搜索和文件ID,然后为每个ID启动一个新任务。

/**
 * @NApiVersion 2.0
 * @NScriptType ScheduledScript
 * @NModuleScope Public
 */
define(['N/log', 'N/search', 'N/task'], function(log, search, task) {
    function execute(context) {
        var searchInfos = getSearchInfo();

        searchInfos.forEach(function(searchInfo) {
            var searchTask = task.create({
                taskType: task.TaskType.SEARCH
            });

            searchTask.savedSearchId = searchInfo.searchId;
            searchTask.fileId = searchInfo.fileId;

            var searchTaskId = searchTask.submit();
            log.debug({ title: 'searchTaskId', details: searchTaskId });
        });
    }

    function getSearchInfo() {
        var results = search.create({
            type: 'customrecord_search_to_csv_info',
            filters: [
                ['isinactive', 'is', 'F']
            ],
            columns: [
                'custcolumn_search_id',
                'custcolumn_file_id'
            ]
        }).run().getRange({ start: 0, end: 1000 });

        return (results || []).map(function(result) {
            return {
                searchId: result.getValue({ name: 'custcolumn_search_id '}),
                fileId: result.getValue({ name: 'custcolumn_file_id' })
            }
        });
    }

    return {
        execute: execute
    };
});

这篇关于NetSuite套件的JavaScript健全性检查的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-09 22:37