GlideSchedule - スコープ指定

スコープ付き GlideSchedule API は、スケジュールへの新しいスケジュールセグメントの追加、日付/時刻がスケジュール内にあるかどうかの判断、スケジュールのタイムゾーンの設定など、GlideSchedule オブジェクトに対する操作を実行するためのメソッドを提供します。

GlideSchedule - GlideSchedule()

空の GlideSchedule オブジェクトをインスタンス化します。

表 : 1. パラメーター
名前 タイプ 説明
なし

GlideSchedule - GlideSchedule(文字列 sysID, 文字列 timeZone)

GlideSchedule オブジェクトをインスタンス化し、スケジュール情報をロードします。タイムゾーンが指定されていない場合は、現在のセッションタイムゾーンが使用されます。

表 : 2. パラメーター
名前 タイプ 説明
sysID 文字列 スケジュールのSys ID。
timeZone 文字列 オプション。使用するタイムゾーン。

デフォルト:現在のセッションのタイムゾーン。

タイムゾーンは、次の形式で指定できます。
  • 国/市区町村。たとえば、 America/Los_Angeles などです。
  • 国/タイムゾーン。たとえば、 米国/太平洋です。
  • タイムゾーンの略称。たとえば、 PST などです。
有効なタイムゾーンの完全なリストについては、ユーザー [sys_user] テーブルの [タイムゾーン ] フィールドを参照してください。タイム ゾーンの詳細については、「 Time zones」を参照してください。
var schedule = new GlideSchedule('090eecae0a0a0b260077e1dfa71da828', 'US/Pacific');

GlideSchedule - add(GlideDateTime startDate, GlideDuration offSet)

現在のスケジュールに新しいスケジュールセグメントを追加します。

表 : 3. パラメーター
名前 タイプ 説明
startDate GlideDateTime 新しいスケジュールセグメントの開始日。
offset GlideDuration 新しいスケジュールセグメントの時間オフセット。
表 : 4. 返される内容
タイプ 説明
GlideDateTime 新しいスケジュールセグメントで更新されたスケジュール。
var startDate = new GlideDateTime('2014-01-02');
var days = 2;
var dur = new GlideDuration(60 * 60 * 24 * 1000 * days);
var schedule = new GlideSchedule();
var end = schedule.add(startDate, dur);
gs.info(end);
出力:
2014-01-04 00:00:00

GlideSchedule - duration(GlideDateTime、startDateDate、GlideDateTime、endDate)

スケジュールのタイムゾーンを使用して (スケジュールのタイムゾーンが指定されていない場合はセッションのタイムゾーンを使用して)、スケジュール内の 2 つの日時値の間の経過時間を判断します。

表 : 5. パラメーター
名前 タイプ 説明
startDate GlideDateTime 開始日時。
endDate GlideDateTime 終了日時。
表 : 6. 返される内容
タイプ 説明
GlideDuration 開始日時と終了日時の差。
var startDate = new GlideDateTime('2014-10-16 02:00:00');
var endDate = new GlideDateTime('2014-10-18 04:00:00');
var schedule = new GlideSchedule();
 
schedule.load('090eecae0a0a0b260077e1dfa71da828'); // loads "8-5 weekdays excluding holidays" schedule
var duration = schedule.duration(startDate, endDate);
gs.info(duration.getDurationValue()); // gets the elapsed time in schedule

GlideSchedule - getName()

スケジュール名を取得します。

表 : 7. パラメーター
名前 タイプ 説明
なし
表 : 8. 返される内容
タイプ 説明
文字列 現在のスケジュールの名前。
sys_id ='04e664654a36232701a2247dcd8fc4cf'; // sys_id for "Application" schedule record
var sched = new GlideSchedule(sys_id);
gs.info(sched.getName());

GlideSchedule - isInSchedule (GlideDateTime 時刻)

指定された日時が現在のスケジュール内にあるかどうかを判断します。

表 : 9. パラメーター
名前 タイプ 説明
time GlideDateTime チェックする日時値。
表 : 10. 返される内容
タイプ 説明
ブーリアン 指定された日時がスケジュール内にあるかどうかを示すフラグ。
有効な値:
  • true:日時はスケジュールの範囲内です。
  • false:日時はスケジュール外です。
var glide = new GlideRecord('cmn_schedule');
glide.addQuery('type', 'blackout');
glide.query();
if (glide.next()) {
   var sched = new GlideSchedule(glide.sys_id);
   var date = new GlideDateTime();
   date.setDisplayValue("2007-09-18 12:00:00");
   if (sched.isInSchedule(date)) 
      gs.info("Is in the schedule");
   else
      gs.info("Is NOT in the schedule");
}

GlideSchedule - isValid()

現在のスケジュールが有効かどうかを判定します。スケジュールは、少なくとも 1 つのスケジュールスパンがある場合に有効です。

表 : 11. 返される内容
タイプ 説明
ブーリアン スケジュールが有効であれば true。
var glide = new GlideRecord('cmn_schedule');
glide.addQuery('type', 'blackout');
glide.query();
if (glide.next()) {
   var sched = new GlideSchedule(glide.sys_id);
   var date = new GlideDateTime();
   date.setDisplayValue("2007-09-18 12:00:00");
   if (sched.isValid()) 
      gs.info("Is valid");
 
   else
      gs.info("Is not valid");
}

GlideSchedule - load(文字列 sysID, 文字列 timeZone, 文字列 excludeSpanID)

スケジュール情報を含むスケジュールをロードします。

表 : 12. パラメーター
名前 タイプ 説明
sysID 文字列 スケジュールのSys ID。
timeZone 文字列 (オプション) タイムゾーン。タイムゾーンが指定されていないか nil の場合は、スケジュールに対して現在のセッションのタイムゾーンが使用されます。
excludeSpanID 文字列 除外するスパン。
表 : 13. 返される内容
タイプ 説明
なし
var x = new GlideSchedule();
x.load('08fcd0830a0a0b2600079f56b1adb9ae');

GlideSchedule - setTimeZone(文字列 timeZone)

現在のスケジュールのタイムゾーンを設定します。

表 : 14. パラメーター
名前 タイプ 説明
timeZone 文字列 使用するタイムゾーン。
タイムゾーンは、次の形式で指定できます。
  • 国/市区町村。たとえば、 America/Los_Angeles などです。
  • 国/タイムゾーン。たとえば、 米国/太平洋です。
  • タイムゾーンの略称。たとえば、 PST などです。
有効なタイムゾーンの完全なリストについては、ユーザー [sys_user] テーブルの [タイムゾーン ] フィールドを参照してください。タイム ゾーンの詳細については、「 Time zones」を参照してください。
表 : 15. 返される内容
タイプ 説明
なし

この例では、スケジュールのタイムゾーンを米国/太平洋に設定します。

var schedule = new GlideSchedule();
schedule.setTimeZone('US/Pacific');

GlideSchedule - whenNext(GlideDateTime 時刻, 文字列 timeZone)

次のスケジュールアイテムの開始時間までの時間 (ミリ秒) を指定します。

この関数は、GlideSchedule オブジェクト (cmn_schedule テーブル) が現在スケジュールウィンドウにない場合に呼び出されることを意図しています。whenNext() 呼び出しは、GlideSchedule オブジェクトがスケジュール内になるまでの期間 (ミリ秒) を返します。GlideSchedule オブジェクトがスケジュール内にあるときに呼び出された場合、この関数は意味のある値を返しません。

表 : 16. パラメーター
名前 タイプ 説明
time GlideDateTime 評価する時間
timeZone 文字列 タイムゾーン
表 : 17. 返される内容
タイプ 説明
数値 次のスケジュールアイテムの開始時刻までのミリ秒数。ない場合は -1 を返します。
var startDate = new GlideDateTime('2014-10-25 08:00:00');
var glideSchedule = new GlideSchedule('08fcd0830a0a0b2600079f56b1adb9ae', 'UTC');
gs.info(glideSchedule.whenNext(startDate));

出力:

172800000
testScript(); 
function testScript() { 
var now = new GlideDateTime(); //current date and time
var sched = new GlideSchedule("<sys_id>"); // Use a cmn_schedule sys_id 
if (sched.isInSchedule(now)){ 
gs.info('We are in an active schedule window so whenNext() is not helpful'); 
} else{  
gs.info('Not currently in schedule so call whenNext()'); 
var msUntilNext = sched.whenNext(new GlideDateTime(), 'US/Pacific'); 
gs.info('Next schedule starts in '+msUntilNext+' milliseconds'); 
} 
}
\\ Output [schedule inactive)]:
\\ *** Script: Not currently in schedule so call whenNext() 
\\ *** Script: Next schedule starts in -1 milliseconds

出力:

[Scheduled for future] *** Script: Not currently in schedule *** Script: Next schedule starts in 332894000 milliseconds