exportnetsuitesuitescriptsaved-searches

Run N/Task on multiple saved searches at once


Is there a straightforward way to modify the below code to execute on multiple saved searches and files simultaneously? I have all the file and search id's. but rather than creating 50 different scripts for each one can I just execute on a block of IDs by altering the below?

Thank you in advance.

All the Oracle documentation only seems to specify how to run these tasks on 1 item.

I know that a map/reduce script is a good path to go down for handling larger amounts of data, is that the way with this or can the below just be tweaked slightly?

/**

* @NApiVersion 2.x

* @NScriptType ScheduledScript

* @NModuleScope SameAccount

*/

define(['N/task'],

/**

* @param {record} record

* @param {search} search

*/

function(task) {

var FILE_ID = 433961; 

var SEARCH_ID = 1610;

function execute(scriptContext) {

var searchTask = task.create({

taskType: task.TaskType.SEARCH

});

searchTask.savedSearchId = SEARCH_ID;

searchTask.fileId = FILE_ID;

var searchTaskId = searchTask.submit();

}

return {

execute: execute

};

});

Solution

  • /**    
      * @NApiVersion 2.x
      * @NScriptType ScheduledScript    
      * @NModuleScope SameAccount  
    */
    
    define(['N/task'], function (task) {
    
      const todos = [
        {
          FILE_ID: 433961,
          SEARCH_ID: 1610
        },
        {
          FILE_ID: '...',
          SEARCH_ID: '...'
        },
        // ...
      ]
    
      function execute(scriptContext) {
    
        todos.forEach(function(todo) {
          var searchTask = task.create({
            taskType: task.TaskType.SEARCH
          });
      
          searchTask.savedSearchId = todo.SEARCH_ID;
          searchTask.fileId = todo.FILE_ID;
          var searchTaskId = searchTask.submit();
        })
    
      }
    
      return {
        execute: execute
      };
    
    });