Im Folgenden ist Code, den ich entwickelt habe, um eine gespeicherte Suche in NetSuite mit SuiteScript auszuführen, eine CSV-Datei mit den Ergebnissen der gespeicherten Suche zu erstellen und dann eine E-Mail an die CSV-Datei zu senden. Das Problem ist, die Ergebnisse sind auf 1000 Datensätze begrenzt. Ich habe dieses Problem untersucht, und es scheint, dass die Lösung darin besteht, eine Schleife auszuführen, die in Schritten von 1000 schneidet. Ein Beispiel von dem, von dem ich glaube, dass es zum Unterteilen von Suchen verwendet wird, ist auch unten.Wie bekomme ich über 1000 Datensätze aus einer SuiteScript Saved Search?
Allerdings kann ich nicht in der Lage sein, das Slicing in meinen Code zu integrieren. Kann mir jemand helfen, den Schneidecode mit meinem ursprünglichen Suchcode zu kombinieren?
var search = nlapiSearchRecord('item', 'customsearch219729');
// Creating some array's that will be populated from the saved search results
var content = new Array();
var cells = new Array();
var temp = new Array();
var x = 0;
// Looping through the search Results
for (var i = 0; i < search.length; i++) {
var resultSet = search[i];
// Returns an array of column internal Ids
var columns = resultSet.getAllColumns();
// Looping through each column and assign it to the temp array
for (var y = 0; y <= columns.length; y++) {
temp[y] = resultSet.getValue(columns[y]);
}
// Taking the content of the temp array and assigning it to the Content Array.
content[x] += temp;
// Incrementing the index of the content array
x++;
}
//Inserting headers
content.splice(0, 0, "sku,qty,");
// Creating a string variable that will be used as the CSV Content
var contents;
// Looping through the content array and assigning it to the contents string variable.
for (var z = 0; z < content.length; z++) {
contents += content[z].replace('undefined', '') + '\n';
}
// Creating a csv file and passing the contents string variable.
var file = nlapiCreateFile('InventoryUpdate.csv', 'CSV', contents.replace('undefined', ''));
// Emailing the script.
function SendSSEmail()
{
nlapiSendEmail(768, 5, 'Inventory Update', 'Sending saved search via scheduled script', '[email protected]', null, null, file, true, null, '[email protected]');
}
Der folgende Code ist ein Beispiel für das, was ich gefunden habe, die verwendet wird, um mehr als 1000 Datensätze zurückzugeben. Als Anfänger kann ich das Slicing nicht in mein ursprüngliches, funktionierendes SuiteScript integrieren. Jede Hilfe wird natürlich sehr geschätzt.
var filters = [...];
var columns = [...];
var results = [];
var savedsearch = nlapiCreateSearch('customrecord_mybigfatlist', filters, columns);
var resultset = savedsearch.runSearch();
var searchid = 0;
do {
var resultslice = resultset.getResults(searchid, searchid+1000);
for (var rs in resultslice) {
results.push(resultslice[rs]);
searchid++;
}
} while (resultslice.length >= 1000);
return results;
Rockstar, deine Antwort ist ein Rockstar! Es hat wunderbar funktioniert .... Vielen Dank für die Zeit und Mühe, die mir geholfen haben! So sehr geschätzt. – Accounting
@Accounting Gut zu wissen, dass es geholfen hat. Prost!! – Rockstar
Ich habe ein kleines Problem festgestellt. Wenn die gespeicherte Suche langsam ausgeführt wird, ist das Skript fehlerhaft und es wird keine Datei generiert.Ich habe die Kriterien in meiner gespeicherten Suche optimiert, um sie effizienter ausführen zu können, und das Problem wurde vorerst behoben. Aber ich befürchte, dass es wieder auftauchen wird, wenn die gespeicherte Suche auf 1000 Datensätze anwächst. Gibt es ein bisschen Code, der hinzugefügt werden kann, um der SS Zeit zu geben, die ausgeführt werden muss, bevor das Ganze aus dem Ruder läuft? Vielen Dank im Voraus für Ihre Einsicht! – Accounting