Netsuite - Ошибка при получении: ошибка при оценке скрипта: все модули SuiteScript API недоступны при выполнении обратного вызова определения - PullRequest
0 голосов
/ 08 июля 2019

У меня есть сценарий ниже, который я пытаюсь загрузить, но получаю сценарий сбоя при оценке: все модули SuiteScript API недоступны при выполнении обратного вызова определения - ошибка.

Не уверен, что я делаю неправильно, поскольку я в основном следую примеру в API.

Примечание: это делается в песочнице.

    /**
* @NApiVersion 2.x
* @NScriptType Suitelet
* @NModuleScope SameAccount
*/

define(['N/email'],
/**
 * @param {email} email
 */
function(email){
  function sendEmail() {
    var senderId = 34972;
    var recipientEmail = 'email@example.com';
    email.send({
      author: senderId,
      recipients: recipientEmail,
      subject: 'Test Sample Email Module',
      body: 'Thisis a test',
    });
  }
  sendEmail();
});

Ответы [ 3 ]

0 голосов
/ 08 июля 2019

Если вы пишете скрипт Suitelet в версии 2.0, вам нужно использовать ВОЗВРАТ вашей функции обратного вызова.В вашем случае это будет выглядеть примерно так:

return {
    onRequest : sendEmail
};

Могу я также спросить - есть ли причина, по которой вы пытаетесь инициировать отправку электронного письма через SUITELET?Предполагая, что вы хотите инициировать электронную почту через URL-адрес, созданный на странице «Сценарий развертывания» в Suitelet, вам следует рассмотреть возможность включения вызова ServerResponse, чтобы написать в браузере, что электронная почта была успешно отправлена.Это будет выглядеть примерно так:

context.response.write('Email now sent');

Наконец, я также вижу, что вы неправильно использовали запятую в конце вашего объекта 'email.send'.Удалите запятую, как указано ниже:

email.send({
  author: senderId,
  recipients: recipientEmail,
  subject: 'Test Sample Email Module',
  body: 'Thisis a test', <---- REMOVE COMMA!
});

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

0 голосов
/ 18 июля 2019

Вот прямой ответ ... закомментируйте все, что не является кодом сценария native suite ... ваши собственные модули, классы и Upload. затем отредактируйте его в картотеке и откомментируйте ваши вещи

0 голосов
/ 08 июля 2019

Это неправильный пакет, и вы вызываете свою функцию внутри определения.

Функции, возвращаемые из define(), могут вызывать функции Netsuite, но ваша функция sendemail вызывает Netsuite API «внутри» определения.

Если вы просто пытаетесь обернуть голову вокруг SuiteScript, измените определение на требование и вызовите этот код в окне консоли.

В противном случае просмотрите документы пакета и верните правильный функциональный объект.

...