---
sourceDocument: Xanadu API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# 相対期間の実装方法

# 相対期間の実装方法 {#ariaid-title1}

* リリースバージョン: Xanadu
* 
* 更新日 2024年08月01日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：3分

cmn_relative_duration テーブルと DurationCalculator スクリプトインクルードを作成することで、相対期間を実装できます。

## 始める前に

必要なロール：admin

## 手順

1. cmn_relative_duration テーブルを作成します。
2. DurationCalculator スクリプトインクルードを作成します。
3. サンプルの相対期間エントリを作成します (たとえば、「4 pm までであれば翌営業日」)。
4. 相対期間をサポートするために必要なフィールドを SLA テーブルに追加します。
5. SLA の期間計算を変更します。
6. SLA の SLA パーセンテージタイマー計算を変更します (これは work_seconds を使用する必要があります)。
7. ワークフローにスケジュールフィールドを追加します： スケジュールとタイムゾーン (ワークフローテーブルのフィールドに基づいて選択)。
8. 期間サポートフィールドをワークフロータスクアクティビティに追加します。
9. タスクアクティビティの期間計算スクリプトを実装します。

## 相対期間テーブルと DurationCalculator メソッド {#ariaid-title2}

cmn_relative_duration テーブルは、期間または相対期間のどちらかでの期日の定義をサポートしています。

このテーブルは、\[名前\] と \[スクリプト\] の 2 つのフィールドで構成されています。\[スクリプト\] フィールドには、相対期間計算スクリプトが含まれています。このスクリプトには、期日の計算に使用される「calculator」変数が含まれています。

DurationCalculator スクリプトインクルードを使用して、期間の計算を実行できます。このスクリプトインクルードで使用できるメソッドは次のとおりです。  
{#c_RelDurTblCalc__table_vbs_swt_1q__entry__2}

| メソッド | 説明 |
|-|-|
| setSchedule(String schedID, \[String timezone\]) | 期日の計算に使用するスケジュールとタイムゾーンを設定します。 |
| setStartDateTime(GlideDateTime start) | 期間計算のための開始時刻を設定します。\[開始\] が空の場合、現在の日付/時刻が使用されます。 |
| calcDuration(int seconds) | 終了日時を計算します。完了すると、this.endDateTime および this.seconds プロパティは、計算の結果を示すように設定されます。 |
| calcRelativeDuration(String relativeDurationID) | 指定された相対期間スクリプトを使用して期間を計算します。完了すると、this.endDateTime および this.seconds プロパティは、計算の結果を示すように設定されます。 |
| getEndDateTime() | 期間の終了日時を示す、calcDuration/calcRelativeDuration によって設定された this.endDateTime プロパティを取得します。 |
| getSeconds() | 期間中に実行される作業の合計秒数を示す、calcDuration/calcRelativeDuration によって設定された this.seconds プロパティを取得します。 注: これは、開始時間と終了時間の合計時間ではなく、合計作業時間であり、作業時間のパーセンテージを決定するために使用されます。 |
| getTotalSeconds() | 期間の開始時刻から終了時刻までの合計秒数を示す、calcDuration/calcRelativeDuration によって設定された this.totalSeconds プロパティを取得します。 |
[表 : 1. DurationCalculator スクリプトインクルードテーブル]

{#c_RelDurTblCalc__table_vbs_swt_1q}

相対期間スクリプトでは、次の関数が使用されます。  
{#c_RelDurTblCalc__table_ahm_gd5_1q__entry__2}

| 関数 | 説明 |
|-|-|
| boolean isAfter(GlideDateTime dt, String time) | 「time」は「dt」で指定された時刻より後になっているかどうか。dt が空白の場合、現在の日付/時刻が使用されます。時間は 24 時間形式の「hh:mm:ss」で表されます。 |
| calcRelativeDueDate(GlideDateTime start, int days, String endTime) | 「start」で始まり、スケジュールとタイムゾーンを使用して「days」を追加して、期日を計算します。作業の期日を特定できたら、その日の「endTime」に時間を設定します。完了すると、this.endDateTime および this.seconds プロパティは、計算の結果を示すように設定されます。「endTime」が空白の場合は、作業終了日の終了時間を使用します。 |
[表 : 2. 相対期間スクリプト関数]

{#c_RelDurTblCalc__table_ahm_gd5_1q}

