Я создаю RESTlet NetSuite, который может принимать идентификатор сохраненного поиска NetSuite в запросе GET и возвращать данные для этого сохраненного поиска. Я отправляю запрос GET из пользовательского сценария R, который я также создал.
Мне интересно, можно ли изменить код RESTlet так, чтобы он не только принимал идентификатор сохраненного поиска NetSuite, но и дополнительные параметры фильтра для изменения поиска перед возвратом данных. И, если вышеизложенное возможно, как должны выглядеть эти параметры фильтра после кодирования для отправки в запросе GET.
Мой код рестлета работает, но только для сохраненных поисков с небольшим количеством записей; NetSuite аннулирует запрос, если количество запрошенных записей слишком велико. Вот мой текущий код RESTlet:
/**
* @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 };
});
Подробнее здесь: https://stackoverflow.com/questions/798 ... et-request
Передача параметров сохраненного поискового фильтра NetSuite через GET-запрос RESTlet API. ⇐ Javascript
Форум по Javascript
1767823698
Anonymous
Я создаю RESTlet NetSuite, который может принимать идентификатор сохраненного поиска NetSuite в запросе GET и возвращать данные для этого сохраненного поиска. Я отправляю запрос GET из пользовательского сценария R, который я также создал.
[b]Мне интересно, можно ли изменить код RESTlet так, чтобы он не только принимал идентификатор сохраненного поиска NetSuite, но и дополнительные параметры фильтра для изменения поиска перед возвратом данных. И, если вышеизложенное возможно, как должны выглядеть эти параметры фильтра после кодирования для отправки в запросе GET.[/b]
Мой код рестлета работает, но только для сохраненных поисков с небольшим количеством записей; NetSuite аннулирует запрос, если количество запрошенных записей слишком велико. Вот мой текущий код RESTlet:
/**
* @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 };
});
Подробнее здесь: [url]https://stackoverflow.com/questions/79862796/pass-netsuite-saved-search-filter-parameters-through-restlet-api-get-request[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия