发送电子邮件前的状态检查

Status check before sending email

提问人:TheIronKing 提问时间:12/9/2022 更新时间:12/10/2022 访问量:113

问:

我有以下脚本,我想在任务完成后发送电子邮件,我已经完全按照 oracle 文档指定的方式输入了检查任务行,并且脚本在没有这些行的情况下也能正常工作,但是当我将它们放入时,我收到错误“语法错误:缺失;在声明之前'

以下是导致问题的行:

let taskStatus = task.checkStatus(searchTask1);
if (taskStatus.status === 'COMPLETE')

我看不出这里有什么遗漏的地方,谁能帮忙?谢谢

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

define(['N/task','N/email'],

/**
* @param {record} record
* @param {search} search
*/

function(task, email) {

var FILE_ID = 433961; 
var SEARCH_ID = 1610;

function execute(scriptContext) {

var searchTask1 = task.create({
taskType: task.TaskType.SEARCH

});

searchTask1.savedSearchId = SEARCH_ID;
searchTask1.fileId = FILE_ID;

var searchTaskId1 = searchTask1.submit();

let taskStatus = task.checkStatus(searchTask1);
if (taskStatus.status === 'COMPLETE'){
email.send({
            author: 3499,
            recipients: 'An email address',
            subject: 'A subject',
            body: 'body text',
        });
}
电子邮件 任务 NetSuite SuiteScript

评论

0赞 W.S. 12/9/2022
您可以尝试使用代替 () 吗?但是,由于任务刚刚在脚本中提交,因此 if 语句将始终计算为 false。varletvar taskStatus
0赞 TheIronKing 12/9/2022
谢谢W.S.这确实奏效了,错误消失了。然而,你是对的,这似乎不起作用,没有电子邮件通过。我可以使用另一种条件参数,它本质上是说,在CSV导出完成后发送电子邮件?谢谢。

答:

1赞 ehcanadian 12/10/2022 #1

您需要再次执行计划的脚本。执行计划脚本时,将 taskId 保存在某个位置(例如文件柜),然后在任务完成后将其删除。您可能还希望在某个位置放置一个计数器,以便在出现问题时计划脚本不会继续运行。像这样的东西;

function(task, email) {

    var FILE_ID = 433961;
    var SEARCH_ID = 1610;

    function execute(scriptContext) {
        var shouldExecuteThis = false;
        var searchTask1 = task.create({
            taskType: task.TaskType.SEARCH
        });

        searchTask1.savedSearchId = SEARCH_ID;
        searchTask1.fileId = FILE_ID;

        var searchTaskId1 = searchTask1.submit();
        // TODO: Save the searchTaskId1 somewhere so we can check the status later. (File cabinet to a text file.)
        if (searchTaskId1) {
            var searchTaskStatus = task.checkStatus({taskId: searchTaskId1});
            // Still pending, so we need to check again later.
            if (searchTaskStatus.status === task.TaskStatus.PENDING || searchTaskStatus.status === task.TaskStatus.PROCESSING) {
                shouldExecuteThis = true;
            }
            // The task has completed, update the configuration file and log the results.
            if (searchTaskStatus.status === task.TaskStatus.COMPLETE) {
                // Delete the searchTaskId1 from where is it saved.
                // SEND EMAIL
                email.send({
                    author: 3499,
                    recipients: 'An email address',
                    subject: 'A subject',
                    body: 'body text',
                });
            }
            if (shouldExecuteThis) {
                var thisTaskId = '';
                var thisTask = task.create({
                    taskType: task.TaskType.SCHEDULED_SCRIPT,
                    scriptId: runtime.getCurrentScript().id,
                    deploymentId: runtime.getCurrentScript().deploymentId
                });

                try {
                    thisTaskId = thisTask.submit();
                } catch (e) {
                    log.error('TASK FAILED', e);
                }
            }
        }
    }
}