Übergeben Sie in NetSuite gespeicherte Suchfilterparameter über die RESTlet-API-GET-AnfrageJavaScript

Javascript-Forum
Anonymous
 Übergeben Sie in NetSuite gespeicherte Suchfilterparameter über die RESTlet-API-GET-Anfrage

Post by Anonymous »

Ich erstelle ein NetSuite-RESTlet, das die ID einer gespeicherten NetSuite-Suche in einer GET-Anfrage akzeptieren und die Daten für diese gespeicherte Suche zurückgeben kann. Ich sende die GET-Anfrage von einem benutzerdefinierten R-Skript aus.
Mein RESTlet-Code funktioniert, aber nur für gespeicherte Suchen mit einer kleinen Anzahl von Datensätzen; NetSuite bricht die Anfrage ab, wenn die Anzahl der angeforderten Datensätze zu groß ist.
Ist es möglich, den folgenden RESTlet-Code so zu ändern, dass er nicht nur die gespeicherte Such-ID akzeptiert, sondern auch zusätzliche Filterparameter, um die Suche zu ändern, bevor die Daten zurückgegeben werden? Und wenn das oben Genannte möglich ist, wie müssen diese Filterparameter nach der Codierung aussehen, damit sie in der GET-Anfrage gesendet werden können?
Hier ist mein RESTlet-Code:

Code: Select all

/**
* @NApiVersion 2.1
* @NScriptType Restlet
*/
define(['N/search', 'N/log'], (search, log) => {
function doGet(request) {
const savedSearchId = request.id;
const offset = parseInt(request.offset) || 0;
const limit = parseInt(request.limit) || 1000;
const end = offset + limit;
const results = [];

try {
if (!savedSearchId) {
return JSON.stringify({ error: "Missing savedSearchId." });
}

log.debug("Request received", { id: savedSearchId, offset, limit });

const ss = search.load({ id: savedSearchId });
const columns = ss.columns;
const columnLabels = columns.map((col, i) =>
col.label || col.name || col.id || `col_${i}`
);

const searchResults = ss.run().getRange({ start: offset, end: end });

if (!searchResults || searchResults.length === 0) {
log.debug("No results in this range", { offset, limit });
return JSON.stringify([]);
}

for (let r = 0; r < searchResults.length; r++) {
const result = searchResults[r];
const row = {};

for (let c = 0; c < columns.length; c++) {
const label = columnLabels[c];
const col = columns[c];
try {
row[label + "_id"]   = result.getValue(col);
row[label + "_text"] = result.getText(col);
} catch (e) {
row[label + "_id"] = null;
row[label + "_text"] = null;
}
}

results.push(row);
}

log.audit("Completed RESTlet", `Returned ${results.length} rows`);
return JSON.stringify(results);

} catch (e) {
log.error("RESTlet Error", e.message);
return JSON.stringify({ error: "UNEXPECTED_ERROR", message: e.message });
}
}

return { get: doGet };
});

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post