Не могли бы вы помочь мне выполнить задание с помощью JavaScript?
У меня есть задача, и если я делаю это вручную, это выглядит так:
Теперь нужно это решить через сутлет скрипт. 1. Создать сохраненный поиск — готово 2. Создайте csv с сохраненным результатом поиска в контенте и поместите его в картотеку в NetSuite - готово 3. Хорошо, теперь у меня есть нужный мне файл, но я не понимаю, как передать его по ftp.
*Я пытался изучить несколько статей, но, честно говоря, не смог решить свою проблему. Более того, их статья кажется о ручном методе, а не об автоматическом
эта статья - https://ursuscode.com/netsuite-tips/suitescript-2-0-sftp-tool/*
var searchResult = Contacts.run().getRange(0,999);
log.debug('Contacts', searchResult);
var Header = 'INTERNAL ID' + ';' + 'FIRST NAME' + ';' + 'LAST NAME';
var Content = "";
for (var i = 0; i < searchResult.length; i++) {
var internalid = searchResult[i].getValue('internalid');
var FirstName = searchResult[i].getValue('firstname');
var LastName = searchResult[i].getValue('lastname');
Content = Content + internalid + ';'
+ FirstName + ';'
+ LastName;
Content = Content + '\n';
}
var fileObj = file.create({
name: 'test.csv',
fileType: file.Type.CSV,
contents: Header + '\n' + Content
});
fileObj.folder = 45434;
var fileId = fileObj.save();
var savedFileObj = file.load({
id: fileId
});
var myPwGuid = '';
var myHostKey = ''
var objConnection = sftp.createConnection({
username: '',
passwordGuid: myPwGuid,
url: 'ftp.expertsender.com',
hostKey: myHostKey
});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


NetSuite не поддерживает ftp, он поддерживает только sftp.
NetSuite поддерживает SFTP, FTP и SFTP, работающие с разными номерами портов. Однако FTP передает данные в текстовом формате, что ставит под угрозу вашу безопасность, использование SFTP является лучшим вариантом, поскольку данные передаются в зашифрованном формате и обеспечивается безопасность.
В вашем примере, я полагаю, вы вызываете FTP-запрос, который в этом случае не будет работать.
Оки,
Теперь статья, которую вы упомянули, является правильной: почему? Потому что первым необходимым шагом для использования SFTP является создание GUID. Вы говорите о ручных методах, ну да, в том числе и о том, что в этой статье, но это не проблема, потому что после того, как вы сгенерировали GUID, вам не нужно его менять, так что это одноразовое действие, если только ваши учетные данные ftp изменились.
Итак, первый шаг: используйте «ursuscode» для создания Suitelet. Разверните этот пакет и используйте его для создания GUID (это форма, в которой вам нужно установить пароль ftp, хост...). Используя ту же форму, вы можете сгенерировать ключ HOST (посмотрите видео).
Второй шаг: используйте сгенерированный GUID и ключ HOST в своем коде.
Третий шаг, добавьте код для загрузки файла: со страницы справки netsuite, вот пример:
connection.upload({
directory: 'relative/path/to/remote/dir',
filename: 'newFileNameOnServer.js',
file: myFileToUpload,
replaceExisting: true
});
Кстати, вы можете загрузить файл без необходимости его повторного сохранения и перезагрузки (https://system.na2.netsuite.com/app/help/helpcenter.nl?fid=section_4617004932.html).
Примечание: помните, что это SFTP, поэтому, вероятно, поддерживает только SFTP, а не FTP.
Предположение: Что касается GUID (и других данных, необходимых для подключения), я предлагаю вам использовать параметр сценария для предоставления GUID вашему коду сценария, поэтому, если ваш пароль изменится, вы можете повторно создать GUID и обновить значение параметра сценария без необходимость прикоснуться к вашему коду.
Надеюсь это поможет!