GlideSchedule - スコープ指定
スコープ付き GlideSchedule API は、スケジュールへの新しいスケジュールセグメントの追加、日付/時刻がスケジュール内にあるかどうかの判断、スケジュールのタイムゾーンの設定など、GlideSchedule オブジェクトに対する操作を実行するためのメソッドを提供します。
GlideSchedule - GlideSchedule()
空の GlideSchedule オブジェクトをインスタンス化します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
GlideSchedule - GlideSchedule(文字列 sysID, 文字列 timeZone)
GlideSchedule オブジェクトをインスタンス化し、スケジュール情報をロードします。タイムゾーンが指定されていない場合は、現在のセッションタイムゾーンが使用されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| sysID | 文字列 | スケジュールのSys ID。 |
| timeZone | 文字列 | オプション。使用するタイムゾーン。 デフォルト:現在のセッションのタイムゾーン。 タイムゾーンは、次の形式で指定できます。
|
var schedule = new GlideSchedule('090eecae0a0a0b260077e1dfa71da828', 'US/Pacific');
GlideSchedule - add(GlideDateTime startDate, GlideDuration offSet)
現在のスケジュールに新しいスケジュールセグメントを追加します。
| 名前 | タイプ | 説明 |
|---|---|---|
| startDate | GlideDateTime | 新しいスケジュールセグメントの開始日。 |
| offset | GlideDuration | 新しいスケジュールセグメントの時間オフセット。 |
| タイプ | 説明 |
|---|---|
| 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:00GlideSchedule - duration(GlideDateTime、startDateDate、GlideDateTime、endDate)
スケジュールのタイムゾーンを使用して (スケジュールのタイムゾーンが指定されていない場合はセッションのタイムゾーンを使用して)、スケジュール内の 2 つの日時値の間の経過時間を判断します。
| 名前 | タイプ | 説明 |
|---|---|---|
| startDate | GlideDateTime | 開始日時。 |
| endDate | GlideDateTime | 終了日時。 |
| タイプ | 説明 |
|---|---|
| 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()
スケジュール名を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | 現在のスケジュールの名前。 |
sys_id ='04e664654a36232701a2247dcd8fc4cf'; // sys_id for "Application" schedule record
var sched = new GlideSchedule(sys_id);
gs.info(sched.getName());
GlideSchedule - isInSchedule (GlideDateTime 時刻)
指定された日時が現在のスケジュール内にあるかどうかを判断します。
| 名前 | タイプ | 説明 |
|---|---|---|
| time | GlideDateTime | チェックする日時値。 |
| タイプ | 説明 |
|---|---|
| ブーリアン | 指定された日時がスケジュール内にあるかどうかを示すフラグ。 有効な値:
|
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 つのスケジュールスパンがある場合に有効です。
| タイプ | 説明 |
|---|---|
| ブーリアン | スケジュールが有効であれば 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)
スケジュール情報を含むスケジュールをロードします。
| 名前 | タイプ | 説明 |
|---|---|---|
| sysID | 文字列 | スケジュールのSys ID。 |
| timeZone | 文字列 | (オプション) タイムゾーン。タイムゾーンが指定されていないか nil の場合は、スケジュールに対して現在のセッションのタイムゾーンが使用されます。 |
| excludeSpanID | 文字列 | 除外するスパン。 |
| タイプ | 説明 |
|---|---|
| なし |
var x = new GlideSchedule();
x.load('08fcd0830a0a0b2600079f56b1adb9ae');
GlideSchedule - setTimeZone(文字列 timeZone)
現在のスケジュールのタイムゾーンを設定します。
| 名前 | タイプ | 説明 |
|---|---|---|
| timeZone | 文字列 | 使用するタイムゾーン。 タイムゾーンは、次の形式で指定できます。
|
| タイプ | 説明 |
|---|---|
| なし |
この例では、スケジュールのタイムゾーンを米国/太平洋に設定します。
var schedule = new GlideSchedule();
schedule.setTimeZone('US/Pacific');
GlideSchedule - whenNext(GlideDateTime 時刻, 文字列 timeZone)
次のスケジュールアイテムの開始時間までの時間 (ミリ秒) を指定します。
この関数は、GlideSchedule オブジェクト (cmn_schedule テーブル) が現在スケジュールウィンドウにない場合に呼び出されることを意図しています。whenNext() 呼び出しは、GlideSchedule オブジェクトがスケジュール内になるまでの期間 (ミリ秒) を返します。GlideSchedule オブジェクトがスケジュール内にあるときに呼び出された場合、この関数は意味のある値を返しません。
| 名前 | タイプ | 説明 |
|---|---|---|
| time | GlideDateTime | 評価する時間 |
| timeZone | 文字列 | タイムゾーン |
| タイプ | 説明 |
|---|---|
| 数値 | 次のスケジュールアイテムの開始時刻までのミリ秒数。ない場合は -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