スケジュール済みジョブの特殊なケース
一部の特殊なケースでは、ジョブスケジューリングに注意が必要です。
月末のスケジュール
月の長さが異なるため、月末にジョブをスケジュールする場合は注意が必要です。
- イベントを 29 日または 30 日にスケジュールすることはお勧めしません。スケジュール済みジョブはその日数よりも短い月 (2 月など) に実行されるからです。
- イベントが 31 日にスケジュールされている場合は、月が 31 日より短くても、イベントはその月の最終日に実行されます。
たとえば、月の 31 日に実行するようにスケジュールされたイベントは、2 月 28 日、うるう年には 2 月 29 日に実行されます。
平日のスケジュール
スケジュールされたスクリプトの場合は、次のスクリプトを使用して平日にのみ実行します。
警告:
スケジュール済みレポートメールの条件付きスクリプトは、サンドボックスで実行されます。したがって、関数定義は許可されません。一部の API 呼び出しとキーワードも許可されません。
var isWeekday;
var today = new Date();
var dayOfWeek = today.getDay(); // Get day of the week(0 = Sunday, 1 = Monday, ... , 6 = Saturday)
switch (dayOfWeek) {
case 0: // Sunday
case 6: // Saturday
isWeekday = false;
break;
default:
isWeekday = true;
}
answer=isWeekday;
スケジュール済みレポートの条件付きスクリプトがより複雑で、Glide クラスを使用する必要がある場合は、回避策として次の手順を使用してください。
- スケジュール済みジョブを作成し、スケジュール済みジョブ内のスケジュール済みレポートのすべての条件付きロジックを完了します。
- すべての条件付きロジックが満たされている場合は、スケジュール済みジョブ内で次のスクリプトを使用してスケジュール済みレポートをトリガーできます。
var schRpGr = new GlideRecord("sysauto_report"); schRpGr.get("<sys_id of the scheduled report>"); gs.executeNow(schRpGr);
スクリプトからのスケジュール済みジョブ
イベントによってトリガーされたスケジュール済みジョブを実行するには、次のスクリプトを使用します。
//Execute a scheduled script job
var rec = new GlideRecord('sysauto_script');
rec.get('name', 'YOUR_JOB_NAME_HERE');
SncTriggerSynchronizer.executeNow(rec);
スクリプトは、次のいずれかのテーブルを使用して実行できます。
- scheduled_import_set (スケジュール済みインポートセット)
- sysauto_script (スケジュール済みスクリプト実行)
- sysauto_template (スケジュールされたテンプレート生成)
- sysauto_report (スケジュール済みレポート)
注:
SncTriggerSynchronizer は、スケジュール済みジョブを将来に実行するメソッドを提供しません。別のインスタンスからインポートされたスケジュール設定済みスクリプトとジョブの実行
スケジュール済みスクリプト実行とスケジュール済みジョブは、ServiceNow AI Platform のデータレコードとして分類されます。つまり、更新セットから除外されます。テーブルが含まれているかどうかを判断するには、次に移動します: をクリックし、問題のテーブルの 属性 値を表示します。属性 update_sync=true を持つテーブルのみが更新セットに含まれます。
オプションで、XML を介してデータレコードをエクスポートおよびインポートできます。ただし、予期しないデータ変更を防ぐために、更新セットなどの XML ファイルからインポートされたデータレコードのスケジュールのアイテム [sys_trigger] レコードは作成されません。別のインスタンスからインポートされたスケジュール済みジョブまたはスクリプトを実行するには、ターゲットインスタンスの対応するジョブまたはスクリプトレコードを更新します。