Я младший разработчик NetSuite и пытаюсь разработать сценарий для автоматического перемещения элементов из одной папки в другую в картотеке NetSuite. В поисках идей о том, как это на самом деле собрать воедино, я заметил явное отсутствие литературы по чему-либо, кроме использования картотеки. Могут ли скрипты программно влиять на картотеку? Каждый документ хранится как запись, поэтому теоретически это должно быть возможно, я просто не знаю, какие библиотеки использовать.
ТЛ:ДР Могу ли я написать скрипты для перемещения файлов в шкафу? Какие библиотеки я бы использовал для этого?
Спасибо за ваше время.
Пытался составлять планы, но застрял, пытаясь выяснить, какой тип сценария использовать и возможно ли это вообще, поскольку ничто в документации, руководстве для разработчиков или сообществе не намекало на то, что это возможно.
Если вы манипулируете файлами в сценарии, размещенном в NetSuite (например, UserEventScript, Suitelet), вы можете использовать модуль N/file
для загрузки файла, присвоения ему нового идентификатора папки и сохранения файла.
Вы можете использовать этот код в наборе или рестлете, если знаете идентификатор файла, который хотите скопировать, и в какой папке он находится.
var id = fileObj.save();
fileObj = file.copy({
id: id,
folder: 2670,
conflictResolution: file.NameConflictResolution.RENAME_TO_UNIQUE
});
Кроме того, вот пример Restlet, который может помочь вам загрузить файл из внешнего API и даже прикрепить его к записи, если хотите (в данном случае к заказу на покупку)...
Чтобы использовать его, вам необходимо сохранить приведенный ниже текст в виде файла .js, а затем загрузить его как скрипт в свою учетную запись Netsuite. Затем вы можете получить URL-адрес из развертывания и выполнить его с помощью полезных данных POST из вашего API или из любого места, где содержатся имя файла, тип файла, содержимое файла (в кодировке Base64), PurchaseOrderId и FolderId.
/**
* @NApiVersion 2.x
* @NScriptType Restlet
*/
define(['N/file', 'N/record', 'N/log'], function(file, record, log) {
function doPost(request) {
try {
// Assuming `request` contains the payload described above
var fileObj = file.create({
name: request.fileName,
fileType: request.fileType,
contents: request.fileContent,
folder: request.folderId
});
// Save the file to the File Cabinet
var fileId = fileObj.save();
// Attach file to Purchase Order
if (fileId && request.purchaseOrderId) {
record.attach({
record: {
type: 'file',
id: fileId
},
to: {
type: 'purchaseorder',
id: request.purchaseOrderId
}
});
return { success: true, message: 'File uploaded and attached successfully.' };
}
} catch (e) {
log.error({ title: 'Error handling file upload', details: e });
return { success: false, message: 'Error processing request: '
e.message };
}
}
return {
post: doPost
};
});