Javascript Netsuite计划脚本已保存搜索

Javascript Netsuite计划脚本已保存搜索,javascript,scheduled-tasks,netsuite,suitescript,saved-searches,Javascript,Scheduled Tasks,Netsuite,Suitescript,Saved Searches,**我正在尝试执行一个保存的搜索,以便每当触发脚本时,我都会获得在该时间段内创建的销售订单。例如:在此之后每隔30米,我将创建此销售订单的文件。这里的想法是,将上次运行记录的创建日期与当前日期时间进行比较,然后此当前时间将可以与下次运行的下一个当前日期时间进行比较,但问题是iam无法将日期格式(即新日期)与iam尝试在保存的搜索创建中使用的日期进行比较** 我的建议是在计划脚本上创建一个脚本参数,例如custscript\u last\u search\u thru\u date。然后在运行搜索

**我正在尝试执行一个保存的搜索,以便每当触发脚本时,我都会获得在该时间段内创建的销售订单。例如:在此之后每隔30米,我将创建此销售订单的文件。这里的想法是,将上次运行记录的创建日期与当前日期时间进行比较,然后此当前时间将可以与下次运行的下一个当前日期时间进行比较,但问题是iam无法将日期格式(即新日期)与iam尝试在保存的搜索创建中使用的日期进行比较**

我的建议是在计划脚本上创建一个脚本参数,例如custscript\u last\u search\u thru\u date。然后在运行搜索后更新参数,以便在下次运行脚本时将其用作开始日期

/**
* @NApiVersion 2.x
* @NScriptType ScheduledScript
* @NModuleScope SameAccount
*/
define(['N/search','N/record','N/file'],

function(search,record,file) {

/**
 * Definition of the Scheduled script trigger point.
 *
 *@param {search} search
 *@param {record} record
 *@param {file} file
 * @param {Object} scriptContext
 * @param {string} scriptContext.type - The context in which the script is executed. It is one of the values from the scriptContext.InvocationType enum.
 * @Since 2015.2
 */
function execute(context) {

    var currentdate=new Date().getTime();
    var arr=[];
    arr.push(currentdate);


    for(i in arr){
        if(arr.length==1){
            var cmpdate=arr[i];
        }
        var cmpdate=arr[i--];
    }

    var sosearch=search.create({type:search.Type.TRANSACTION,
        filters:[
                ['type',search.Operator.ANYOF,'SalesOrd'],'and',
                ['mainline',search.Operator.IS,true],'and',
                ['formuladate',search.Operator.AFTER,cmpdate]                   
                ],
    columns:['salesoreder']

    });

  var searchresult=sosearch.run().each(function(result) {
        var soid= result.getValue({
            name: 'internalid'
});
  });

  for(r in searchresult){
      var sorec=record.load({type:'salesorder',id:searchresult[r]});
      var myfile=file.create({name:maqsofile,fileType:file.Type.CSV,contents:sorec})
      myfile.folder=520;
      myfile.save();
  }    
}
return {
    execute: execute
};

});

在搜索当前日期时间的值时,我使用变量cmpdate创建iam,该变量是我从存储以前的当前日期时间的数组中检索到的。非常感谢kevin花费您的时间来解决我的问题。这帮了大忙,但我想问你的另一件事是,要通过SuiteScript设置脚本参数值,请使用你提供的方法,即record.submitField。。你能帮我吗发生了什么事?你有错误吗?您是否已将脚本参数设置为DateTime类型?它是否设置为存储值?它仅设置为DateTime类型,但通过脚本我们如何设置脚本参数的值,因为您使用了上述方法,即record.submitField。。如果未设置脚本参数的值,则无法正常工作。此外,在调用record.submitFields时,是否通过其数字ID引用部署记录?该函数未设置为接受部署的脚本ID,例如customdeploy\u this\u will\u break。我尝试了ID的数字和自定义ID,但它不起作用。我在netsuite帮助中心上发现,我们无法从脚本中为脚本参数设置值。因此,我已经为这个任务使用了自定义记录类型,现在我的问题解决了。仍然非常感谢kevin。
var searchStartDate = runtime.getCurrentScript().getParameter({name: 'custscript_last_search_thru_date'});
var searchEndDate=new Date();

filters.push(search.createFilter({
    name: 'datecreated',
    operator: search.Operator.AFTER,
    values: searchStartDate.getTime()
}));

filters.push(search.createFilter({
    name: 'datecreated',
    operator: search.Operator.ONORBEFORE,
    values: searchEndDate.getTime()
}));

// Run search and do stuff

record.submitFields({
    type: 'scriptdeployment',
    id: deploymentId,
    values: {
        custscript_last_search_thru_date : searchEndDate
    }
});