N/task
とN/runtime
のモジュールがあります。再スケジューリングにはN/task
を使用し、現在のスクリプト情報を取得するにはN/runtime
を使用します。あなたの正確なコードなしで
は、私は非常に具体的な例を与えることはできませんが、あなたのスケジュールされたスクリプトは、一般的のようなものを見てしまいます。それはscheduledScriptTask.submitように思える
/**
* @NApiVersion 2.x
* @NScriptType ScheduledScript
*/
define(['N/task', 'N/runtime'], function(task, runtime) {
/**
* Reschedules the current script and returns the ID of the reschedule task
*/
function rescheduleCurrentScript() {
var scheduledScriptTask = task.create({
taskType: task.TaskType.SCHEDULED_SCRIPT
});
scheduledScriptTask.scriptId = runtime.getCurrentScript().id;
scheduledScriptTask.deploymentId = runtime.getCurrentScript().deploymentId;
return scheduledScriptTask.submit();
}
function execute(context) {
// Do stuff...
while(...) {
// Do processing in loop
// Check remaining usage and reschedule if necessary
if (runtime.getCurrentScript().getRemainingUsage() < 100) {
var taskId = rescheduleCurrentScript();
log.audit("Rescheduling status: " + task.checkStatus(taskId));
return;
}
}
}
return {
execute: execute
};
});
これにより、実行中の同じポイントでスクリプトを終了することもできますか?たとえば、スケジュールされたスクリプトで保存された検索の結果をループしている場合、このメソッドはスクリプトが中断した保存された検索と同じ結果でスケジュールされたスクリプトを再開できますか?または、保存された検索の最初の結果から開始されますか? –
スケジュールされたスクリプトを再スケジューリングするときは、中断したところで再開を管理する必要があります。これは通常、内部IDによる結果のソート、最後に処理されたIDの保管、および最後に処理されたIDよりも大きな内部IDの検索のフィルター処理によって実行されます。 – erictgrubaugh
最後の処理IDはどこに保存するのが最も安全ですか? –