Как я могу запустить запланированный скрипт с помощью кнопки?

я хочу создать кнопку в форме, которая выполняет запланированный скрипт, но ничего из того, что я пытаюсь, не работает

Я пробовал метод addButton для вызова функции, которая создает задачу для запланированного скрипта, но она выполняется только при загрузке формы.

/**
 *@NApiVersion 2.x
 *@NScriptType UserEventScript
 */
define(["N/task", "N/ui/serverWidget"], function(task, serverWidget) {
  function beforeLoad(context) {

    context.form.addButton({
      id: "custpage_setTask",
      label: "Execute scheduled",
      functionName: executeScheduled()
    });
  }

  return {
    beforeLoad: beforeLoad
  };

  function executeScheduled() {
    var scriptTask = task.create({ 
      taskType: task.TaskType.SCHEDULED_SCRIPT,
      scriptId: 'customscript_sdr_ss_product_shortage',
      deploymentId: 'customdeployprodshortsearch'
     });

    var scriptTaskId = scriptTask.submit();

    log.debug('scriptTaskId', scriptTaskId);
  }
});

который выполняет запланированный скрипт, но только в форме загрузки, а затем кнопка ничего не делает, пожалуйста, помогите и спасибо за чтение

Вам нужно запустить функцию executeScheduled() в отдельном клиентском скрипте.

curiousKido 27.05.2020 12:20
5 дизайнов темных кнопок с использованием HTML и CSS
5 дизайнов темных кнопок с использованием HTML и CSS
Здесь представлены пять дизайнов темных кнопок с кодом с использованием HTML и CSS:
0
1
2 427
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я считаю, что вам также необходимо экспортировать функцию кнопки.

      return {
        beforeLoad: beforeLoad,
        executeScheduled:executeScheduled        
      };

Вам также необходимо изменить параметры кнопки

context.form.addButton({
  id: "custpage_setTask",
  label: "Execute scheduled",
  functionName: executeScheduled
});

Он выдает ошибку «Uncaught SyntaxError: Invalid or неожиданного токена» в консоли, когда я нажимаю кнопку

Alejndr 23.07.2019 08:20
Ответ принят как подходящий

Мне удалось это сделать в конце. Было создано 3 сценария, пользовательское событие, которое вызывает клиентский сценарий, который выполняет запрос на получение пакета с функцией, которая создает задачу для запланированного сценария.

Это пользовательское событие:

/**
 *@NApiVersion 2.x
 *@NScriptType UserEventScript
 */
define(["N/task", "N/ui/serverWidget"], function(task, serverWidget) {
  function beforeLoad(context) {

    // internal id of the client script on file cabinet
    context.form.clientScriptFileId = 2343;
    context.form.addButton({
      id: "custpage_setTask",
      label: "Execute scheduled",
      functionName: 'redirect'
    });
  }

  return {
    beforeLoad: beforeLoad,
  };


});

Это клиентский скрипт:

/**
 *@NApiVersion 2.x
 *@NScriptType ClientScript
 */
define(["N/url", "N/https"], function(url, https) {
  function pageInit(context) {}

  function redirect() {
    var output = url.resolveScript({
      scriptId: "customscript_sss_sl_startschedulescript",
      deploymentId: "customdeploy_sss_sl_startschedulescript"
    });

    log.debug('url', output);

    var response = https.get({
      url: output
    });

    log.debug('response', response);
  }

  return {
    pageInit: pageInit,
    redirect: redirect
  };
});

и это Suitelet:

/**
 *@NApiVersion 2.x
 *@NScriptType Suitelet
 */
define(["N/task"], function(task) {
  function onRequest(context) {
    executeScheduled();
  }

  function executeScheduled() {
    var scriptTask = task.create({
      taskType: task.TaskType.SCHEDULED_SCRIPT,
      scriptId: "customscript_sdr_ss_product_shortage",
      deploymentId: "customdeployprodshortsearch"
    });

    var scriptTaskId = scriptTask.submit();

    log.debug("scriptTaskId", scriptTaskId);
  }

  return {
    onRequest: onRequest
  };
});



Я надеюсь, что это поможет еще одному с той же проблемой.

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