Seriously, I don’t know why this was so difficult, but I could not find a full working example of an ad hoc search written in SuiteScript 2.0 that included a join. Let me give a quick shout-out to Marty Zigman. Thanks for getting me 90% of the way there!
Here’s Marty’s example: http://blog.prolecto.com/2016/10/22/netsuite-suitescript-2-0-search-join-and-summary-example/
I’m a bit stupified by the .run().getRange(0,1000). I was trying to use .run().each() and could not get it to work. I’m not a fan of the for-loop in this case. Whatever!… This works!
Here’s the example. This script lists files in a folder that begin with text of your choosing.
And here’s the code so that you can easily copy it.
/**
*@NApiVersion 2.x
*@NScriptType ScheduledScript
*/
define([‘N/search’, ‘N/log’],
function (search, log) {
function execute(context) {
var mySearch = search.create({
type: search.Type.FOLDER,
columns: [
search.createColumn({
name: ‘internalid’,
join: ‘file’
}),
search.createColumn({
name: ‘name’,
join: ‘file’
}),
],
filters: [
search.createFilter(
{
name: ‘name’,
operator: search.Operator.IS,
values: [‘Your folder name here’]
}
),
search.createFilter(
{
name: ‘name’,
join: ‘file’,
operator: search.Operator.STARTSWITH,
values: [‘Your file name here’]
}
),
]
});
var result = mySearch.run().getRange(0, 1000);
var ids = new Array();
var names = new Array();
for (var i = 0; i < result.length; i++) {
ids.push(result[i].getValue({ name: ‘internalid’, join: ‘file’ }));
names.push(result[i].getValue({ name: ‘name’, join: ‘file’ }));
}
log.debug(‘ids’, ids.join(‘,’));
log.debug(‘names’, names.join(‘,’));
return true;
}
return {
execute: execute
};
})
If I need 1000000 results , how to to code my getRange() function.
LikeLike
var myPages = mySearch.runPaged({ pageSize: 1000 });
for (var i = 0; i < myPages.pageRanges.length; i++) {
var myPage = myPages.fetch({ index: i });
myPage.data.forEach(
function (result) {
var internalid = result.getValue('internalid');
customers.push(internalid);
}
)
}
LikeLike