Может ли Netsuite Suitescript изменить файл в картотеке?
Вопрос
У меня есть большой список продуктов, и мне нужно сгенерировать его статический файл, и сделать так, чтобы этот файл был доступен на моем веб-сайте.В настоящее время я создаю список и загружаю его в картотеку.Я хочу автоматизировать этот процесс.Я хотел бы запланировать запуск SuiteScript каждую ночь, сгенерировать этот список и обновить файл в картотеке.
Можно ли это сделать?
Спасибо
Решение
Вы можете автоматизировать этот процесс с помощью SuiteScript.Для этого вы должны использовать вызовы nlapiLoadFile и nlapiSubmitFile.Если у вас большой список продуктов, вы, скорее всего, столкнетесь с несколькими другими проблемами.Скорее всего, вы столкнетесь с ограничениями в управлении, и вам нужно будет разработать этот скрипт таким образом, чтобы он отслеживал прогресс и соответствующим образом перепланировал себя.Поиск по SuiteScript вернет только первые 1000 записей.Если у вас есть более 1000 элементов для включения в этот файл, вам, вероятно, потребуется использовать флаг в записи элемента, чтобы отслеживать, какие элементы остаются для экспорта.В настоящее время размер файла ограничен 5 МБ при загрузке или создании файлов с помощью SuiteScript.
Другие советы
Пример SuiteScript для создания файла:
var data = 'Your,CSV,File,Here';
var folderId = 519; // Your File Cabinet folder ID here
// Create the file and add it to the folder
var f = nlapiCreateFile('products.csv', 'CSV', data);
f.setFolder(folderId);
var id = nlapiSubmitFile(f);
// If you want to attach the file to a record, you can do something like this:
nlapiAttachRecord('file', id, 'customrecord_x', recordId);
Да, вы могли бы сделать это с помощью запланированных сценариев и запланировать их по своему желанию.Не существует специальной функции API для редактирования существующего файла, вы могли бы взять детали существующего файла и создать новый файл с теми же деталями, но изменив только поле данных и удалив старый файл.
var start = function(request, response)
{
var fileId = "107524";//get the existing file id
var file = nlapiLoadFile(fileId);
var data = file.getValue();
var name = file.getName();
var folderId = file.getFolder();
var fileType = file.getType();
nlapiDeleteFile(fileId);//delete the older file
data += "this is the appended data";//change the data
var newFile = nlapiCreateFile(name, fileType, data);//create a new file with the same details
newFile.setFolder(folderId);
nlapiSubmitFile(newFile);//submit it
}