Как передать файл csv из картотеки в NetSuite на ftp-сервер с помощью JavaScript?

Не могли бы вы помочь мне выполнить задание с помощью JavaScript?

У меня есть задача, и если я делаю это вручную, это выглядит так:

  1. я создаю сохраненный поиск в NetSuite.
  2. Скачать результат созданного сохраненного поиска в csv.
  3. Я поместил этот файл на ftp-сервер, используя FileZilla. (раньше у меня было подключение к серверу: пишите домен, логин и пароль - и все)

Теперь нужно это решить через сутлет скрипт. 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
                        });
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
1 275
3

Ответы 3

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 и обновить значение параметра сценария без необходимость прикоснуться к вашему коду.

Надеюсь это поможет!

Другие вопросы по теме