---
sourceDocument: オーストラリア API リファレンス
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/api-reference

 Release :

    - australia

ft:locale :

    - ja-JP

ft:publication_title :

    - オーストラリア API リファレンス

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# オプション:スコープ対象、グローバル

# オプション:スコープ対象、グローバル {#ariaid-title1}

* リリースバージョン: Australia
* 
* 更新日 2026年03月12日
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 所要時間：13分

オプションの API は、GlideQuery、Stream、または GlideRecord API によって返された単一のレコードを、存在しない場合でも操作します。null または未定義のクエリ結果を処理することで、エラーが発生する可能性が低いスクリプトを記述します。

オプションのオブジェクトは、次の方法で取得できます。  
* GlideQuery クラスのこれらのメソッドから Optional オブジェクトを返します。詳細については、「 [GlideQuery](https://servicenow-prod.fluidtopics.net/wvQK5jnpsdHG3mPNthJUYg#GlideQueryGlobalAPI "GlideQuery スクリプトインクルードは、サーバーサイドスクリプトのレコードデータに対して CRUD 操作を実行するための GlideRecord API の代替です。")」を参照してください。
  * [getBy()](https://servicenow-prod.fluidtopics.net/wvQK5jnpsdHG3mPNthJUYg#GQ-getBy_O_O "クエリーする名前と値のペアのセットに基づいて、単一レコードを含むオプションのオブジェクトを返します。名前と値のペアごとに「=」演算子を想定します。")
  * [get()](https://servicenow-prod.fluidtopics.net/wvQK5jnpsdHG3mPNthJUYg#GQ-get_S_O "クエリから単一のレコードを返します。")
  * [insert()](https://servicenow-prod.fluidtopics.net/wvQK5jnpsdHG3mPNthJUYg#GQ-insert_O_O "レコードを挿入し、そのレコードを含むオプションのオブジェクトを返します。")
  * [insertOrUpdate()](https://servicenow-prod.fluidtopics.net/wvQK5jnpsdHG3mPNthJUYg#GQ-insertOrUpdate_O_O "既存のレコードを更新するか、まだ存在しない場合は新しいレコードを挿入します。")
  * [update()](https://servicenow-prod.fluidtopics.net/wvQK5jnpsdHG3mPNthJUYg#GQ-update_O_O "定義された条件に一致する既存のレコードを更新します。")
  * [selectOne()](https://servicenow-prod.fluidtopics.net/wvQK5jnpsdHG3mPNthJUYg#GQ-selectOne_S "クエリの結果を、指定されたフィールドを含むオプションのオブジェクトとして返します。")
  * [avg()](https://servicenow-prod.fluidtopics.net/wvQK5jnpsdHG3mPNthJUYg#GQ-avg_S "指定された数値フィールドのアグリゲート平均を返します。")
  * [max()](https://servicenow-prod.fluidtopics.net/wvQK5jnpsdHG3mPNthJUYg#GQ-max_S "指定されたフィールドのアグリゲート最大値を返します。")
  * [最小値](https://servicenow-prod.fluidtopics.net/wvQK5jnpsdHG3mPNthJUYg#GQ-min_S "指定されたフィールドのアグリゲート最小値を返します。")
  * [sum()](https://servicenow-prod.fluidtopics.net/wvQK5jnpsdHG3mPNthJUYg#GQ-sum_S "指定された数値フィールドの集計を返します。")
  {#OptionalGlobalAPI__ul_bgr_bhl_4mb}
* Streamクラスの[find()](https://servicenow-prod.fluidtopics.net/fWTns~4uO4RxMnia01u7YQ#Stream-find_F "述語関数に一致する Stream オブジェクト内の最初のレコードまたはアイテムを返します。述語関数が指定されていない場合、メソッドはストリーム内の最初のレコードまたはアイテムを返します。")メソッドからOptionalオブジェクトを返します。Stream の詳細については、「[Stream](https://servicenow-prod.fluidtopics.net/fWTns~4uO4RxMnia01u7YQ#StreamGlobalAPI "ストリーム API は、レコードなどのアイテムのストリームとやり取りするためのメソッドを提供します。たとえば、 forEach() メソッドを使用して、 GlideQuery API によって返されるストリーム内の各レコードのステータスを更新できます。") API」を参照してください。
* 必要に応じて、 [lazy()](https://servicenow-prod.fluidtopics.net/YNhUFtS1UM1vULG42ZmVmw#Optional-lazy_F "新しいオプションオブジェクトを返します。オブジェクトには、レコードを含むのではなく、コードで要求された場合にのみ呼び出されるレコードを取得する関数が含まれています。") メソッドを使用して Optional の値を生成します。
{#OptionalGlobalAPI__ul_d3q_3dl_4mb}

これらのメソッドは静的であり、クラスのインスタンスを必要としません。  
* [lazy()](https://servicenow-prod.fluidtopics.net/YNhUFtS1UM1vULG42ZmVmw#Optional-lazy_F "新しいオプションオブジェクトを返します。オブジェクトには、レコードを含むのではなく、コードで要求された場合にのみ呼び出されるレコードを取得する関数が含まれています。")
* [of()](https://servicenow-prod.fluidtopics.net/YNhUFtS1UM1vULG42ZmVmw#Optional-of_A "指定された値をオプションのオブジェクトにラップします。たとえば、GlideRecord クエリの結果を Optional オブジェクトでラップして、関連するメソッドを使用できます。")
* [空()](https://servicenow-prod.fluidtopics.net/YNhUFtS1UM1vULG42ZmVmw#Optional-empty_S "空のオプションオブジェクトを返します。このメソッドを Else 句で使用して、結果を返さない可能性があるクエリを処理します。")
{#OptionalGlobalAPI__ul_jpq_2px_5mb}

これらの静的メソッドは、単一の値を返す任意の API ( [GlideRecord](https://servicenow-prod.fluidtopics.net/sq3Fh7Z2Yb_KuRvql0AZmg#c_GlideRecordScopedAPI "スコープ対象の GlideRecord API は、データベース操作に使用されます。") など) で使用できます。

スコープ対象またはグローバルサーバーサイドスクリプトで オプション の API を使用します。この API には GlideQuery \[com.sn_glidequery\] プラグインが必要です。

## 実装 {#OptionalGlobalAPI__section_wqk_wwv_wmb}

この API は、 [GlideQuery](https://servicenow-prod.fluidtopics.net/wvQK5jnpsdHG3mPNthJUYg#GlideQueryGlobalAPI "GlideQuery スクリプトインクルードは、サーバーサイドスクリプトのレコードデータに対して CRUD 操作を実行するための GlideRecord API の代替です。") API および [Stream](https://servicenow-prod.fluidtopics.net/fWTns~4uO4RxMnia01u7YQ#StreamGlobalAPI "ストリーム API は、レコードなどのアイテムのストリームとやり取りするためのメソッドを提供します。たとえば、 forEach() メソッドを使用して、 GlideQuery API によって返されるストリーム内の各レコードのステータスを更新できます。") API と連携します。 メソッドの呼び出しが連鎖するビルダーパターンで、各メソッドは前のメソッドの返された結果に基づいて構築されます。メソッドを使用してクエリーの属性を定義します。メソッドは、ターミナルメソッド (クエリ結果を返すメソッド) を呼び出すまで実行されません。これにより、クエリを実行する前にクエリの要件を定義できます。

クエリーが単一のレコードを返す場合、システムは結果をオプションのオブジェクトにラップします。クエリーがレコードのストリームを返す場合、システムは結果を Stream オブジェクトにラップします。これらのオブジェクトを使用すると、各 API の一連のメソッドを使用して結果を管理できます。

たとえば、このスクリプトはタスク テーブルに対してクエリを実行し、レコードを優先度別にグループ化して、合計再アサイン回数が 4 回を超える各優先度を返します。{#OptionalGlobalAPI__code-ex-desc}  

    var query = new global.GlideQuery('task')
        .where('active', true) //Returns new GlideQuery object with a "where" clause.
        .groupBy('priority') //Returns new GlideQuery object with a "group by" clause.
        .aggregate('sum', 'reassignment_count') //Returns new GlideQuery object with a "sum(reassignment_count)" clause.
        .having('sum', 'reassignment_count', '>', 4) //Returns new GlideQuery object with a "having reassignment_count > 4" clause.
        .select() //Returns a stream of records wrapped in a Stream object.  
        .forEach(function (priority){ //Terminal method in the Stream class that executes the query and returns the result. 
          gs.info("Priority " + priority.group.priority + ": " + priority.sum.reassignment_count + " reassignments");
        });

出力：

    Priority 1: 11 reassignments
    Priority 3: 6 reassignments
    Priority 5: 5 reassignments

## ターミナルメソッド {#OptionalGlobalAPI__section_dcn_52g_ymb}

パフォーマンス上の理由から、クエリはターミナルメソッドを呼び出した場合にのみデータをフェッチします。以下は 、Optional クラスのターミナルメソッドです。  
* [get()](https://servicenow-prod.fluidtopics.net/YNhUFtS1UM1vULG42ZmVmw#Optional-get "オプションオブジェクト内のレコードを返すか、クエリがレコードを返さない場合はエラーをスローします。")
* [orElse()](https://servicenow-prod.fluidtopics.net/YNhUFtS1UM1vULG42ZmVmw#Optional-orElse "クエリが結果を返さない場合は、オプションのオブジェクト内にデフォルト値を追加します。")
* [ifPresent()](https://servicenow-prod.fluidtopics.net/YNhUFtS1UM1vULG42ZmVmw#Optional-ifPresent_F "オプションオブジェクト内のレコードに関数を適用します。オプションのオブジェクトにレコードが含まれていない場合、関数は実行されません。")
* [isEmpty()](https://servicenow-prod.fluidtopics.net/YNhUFtS1UM1vULG42ZmVmw#Optional-isEmpty "オプションのオブジェクトが空の場合は true を返します。")
* [isPresent()](https://servicenow-prod.fluidtopics.net/YNhUFtS1UM1vULG42ZmVmw#Optional-isPresent "オプションのオブジェクトに値が含まれているかどうかを確認します。")
{#OptionalGlobalAPI__ul_z2v_tgg_ymb}

## オプション:空 (文字列の理由) {#ariaid-title2}

空のオプションオブジェクトを返します。このメソッドを Else 句で使用して、結果を返さない可能性があるクエリを処理します。
注:  
このメソッドは静的です。このメソッドを使用するためにクラスのインスタンスは必要ありません。
{#Optional-empty_S__table_xj5_k1l_4mb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| 理由 | 文字列 | オプション。空の Optional オブジェクトで Optional.get() が呼び出されたときにログに表示される理由。 |
[表 : 1. パラメーター]

{#Optional-empty_S__table_xj5_k1l_4mb} {#Optional-empty_S__table_yj5_k1l_4mb__entry__2}

| タイプ | 説明 |
|-|-|
| オプション | 単一のレコードを操作するために使用されるオブジェクト。 |
[表 : 2. 返される内容]

{#Optional-empty_S__table_yj5_k1l_4mb}  
この例では、クエリーが結果を返さない場合に空のオプションオブジェクトを生成する方法を示します。

    var now_GR = new GlideRecord('task');
    now_GR.addQuery('approval', 'not requested'); 
    now_GR.query();
    var optional;
    if (now_GR.next()) {
    optional = Optional.of(now_GR.getUniqueValue());
    } else {
        optional = Optional.empty("no results");
    }

    gs.info(optional.get());

出力：

    NiceError: [2020-08-26T23:23:37.402Z]: get() called on empty Optional: no results

## オプション:filter(関数述語) {#ariaid-title3}

述語関数 (単一の値を受け取り、true または false を返す関数) を Optional オブジェクト内のレコードに適用します。この関数が true を返す場合、メソッドはオプションのレコードを変更せずに返します。関数が false を返す場合は、空の Optional オブジェクトを返します。
{#Optional-filter_F__table_qyn_g1l_4mb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| 述語 | 関数 | Optional オブジェクト内の値に適用する述語関数。ブール値を返す必要があります。 |
[表 : 3. パラメーター]

{#Optional-filter_F__table_qyn_g1l_4mb} {#Optional-filter_F__table_ryn_g1l_4mb__entry__2}

| タイプ | 説明 |
|-|-|
| オプション | 単一のレコードを操作するために使用されるオブジェクト。 |
[表 : 4. 返される内容]

{#Optional-filter_F__table_ryn_g1l_4mb}  
この例では、オプションの結果にフィルター関数を適用する方法を示します。

    var filteredQuery = new global.GlideQuery('sys_user')
        .getBy({ sys_id: 'f682abf03710200044e0bfc8bcbe5d38' }, ['phone'])
        .filter(function (user) {
            return phoneRegex.test(user.phone);
        });

## オプション:flatMap(関数 fn) {#ariaid-title4}

Optional オブジェクトを返す関数をクエリーの結果に適用します。このメソッドを使用して、最初のクエリの結果を使用して 2 番目のクエリを実行します。
{#Optional-flatMap_F__table_nrd_tgf_4mb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| fn | 関数 | オプションのオブジェクトを返したクエリの結果に適用する関数 。 |
[表 : 5. パラメーター]

{#Optional-flatMap_F__table_nrd_tgf_4mb} {#Optional-flatMap_F__table_ord_tgf_4mb__entry__2}

| タイプ | 説明 |
|-|-|
| オプション | 単一のレコードを操作するために使用されるオブジェクト。 |
[表 : 6. 返される内容]

{#Optional-flatMap_F__table_ord_tgf_4mb}  
この例では、前のクエリの結果に基づいてユーザーテーブルのクエリを実行する方法を示します。

    new global.GlideQuery('alm_asset')
        .whereNotNull('owned_by')
        .selectOne('owned_by')
        .flatMap(function (asset) {
            return new global.GlideQuery('sys_user')
                .getBy({ sys_id: asset.owned_by }, ['first_name', 'last_name', 'company.name'])
        })
        .ifPresent(GQ.jsonDebug);

出力：

    {
      "sys_id": "46d59205a9fe198101d603f5de37bfa3",
      "first_name": "John",
      "last_name": "Bohnhamn",
      "company": {
        "name": "ACME North America"
      }
    }

## オプション:get() {#ariaid-title5}

オプションオブジェクト内のレコードを返すか、クエリがレコードを返さない場合はエラーをスローします。
{#Optional-get__table_px4_5gf_4mb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 7. パラメーター]

{#Optional-get__table_px4_5gf_4mb} {#Optional-get__table_qx4_5gf_4mb__entry__2}

| タイプ | 説明 |
|-|-|
| 任意 | オプションオブジェクト内のレコード。値が null または未定義の場合、システムはエラーをスローします。 |
[表 : 8. 返される内容]

{#Optional-get__table_qx4_5gf_4mb}  
この例は、単一のレコードの値を取得する方法を示しています。

    var value = new global.GlideQuery('sys_user')
        .selectOne('first_name') //Returns the result of the query inside an Optional object
        .get(); //Calls Optional.get() on the Optional object

    gs.info(JSON.stringify(value));

出力：

    {
       "first_name":"fred",
       "sys_id":"005d500b536073005e0addeeff7b12f4"
    }

## オプション:ifPresent(関数 fn) {#ariaid-title6}

オプションオブジェクト内のレコードに関数を適用します。オプションのオブジェクトにレコードが含まれていない場合、関数は実行されません。
{#Optional-ifPresent_F__table_n55_21l_4mb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| fn | 関数 | オプションオブジェクト内のレコードに適用する機能。 |
[表 : 9. パラメーター]

{#Optional-ifPresent_F__table_n55_21l_4mb} {#Optional-ifPresent_F__table_o55_21l_4mb__entry__2}

| タイプ | 説明 |
|-|-|
| なし |   |
[表 : 10. 返される内容]

{#Optional-ifPresent_F__table_o55_21l_4mb}  
この例では、値が存在する場合に出力する方法を示します。

    var user = new global.GlideQuery('sys_user')
        .where('sys_id', 'f682abf03710200044e0bfc8bcbe5d38')
        .selectOne('zip')
        .ifPresent(function (user) {
          gs.info('Zip Code: ' + user.zip);
        });

## オプション:isEmpty() {#ariaid-title7}

オプションのオブジェクトが空の場合は true を返します。
{#Optional-isEmpty__table_yhd_b1l_4mb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 11. パラメーター]

{#Optional-isEmpty__table_yhd_b1l_4mb} {#Optional-isEmpty__table_zhd_b1l_4mb__entry__2}

| タイプ | 説明 |
|-|-|
| ブーリアン | クエリの結果に値が含まれているかどうかを示すフラグ。 有効な値： * true:クエリは null または未定義を返します。 * false:クエリは値を返します。 {#Optional-isEmpty__ul_htd_wcs_smb} |
[表 : 12. 返される内容]

{#Optional-isEmpty__table_zhd_b1l_4mb}  
この例では、クエリの結果が空かどうかを確認する方法を示します。

    var checkEmpty = new global.GlideQuery('sys_user')
        .where('last_name', 'Barker')
        .selectOne()
        .isEmpty();

    gs.info(checkEmpty);

出力：

    true

## オプション:isPresent() {#ariaid-title8}

オプションのオブジェクトに値が含まれているかどうかを確認します。
{#Optional-isPresent__table_icx_c1l_4mb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| なし |   |   |
[表 : 13. パラメーター]

{#Optional-isPresent__table_icx_c1l_4mb} {#Optional-isPresent__table_jcx_c1l_4mb__entry__2}

| タイプ | 説明 |
|-|-|
| ブーリアン | クエリの結果に値が含まれているかどうかを示すフラグ。 有効な値： * true:クエリは値を返します。 * false:クエリは null または未定義を返します。 {#Optional-isPresent__ul_htd_wcs_smb} |
[表 : 14. 返される内容]

{#Optional-isPresent__table_jcx_c1l_4mb}  
この例では、クエリーが結果を返すかどうかを確認する方法を示します。

    var checkPresent = new global.GlideQuery('sys_user')    
       .where('last_name', 'Luddy')
       .selectOne('first_name')
       .isPresent();

    gs.info(checkPresent);

出力：

    true

## オプション:lazy(関数:lazyGetFn) {#ariaid-title9}

新しいオプションオブジェクトを返します。オブジェクトには、レコードを含むのではなく、コードで要求された場合にのみ呼び出されるレコードを取得する関数が含まれています。
このメソッドを使用して、必要になるまで値の取得を遅らせます。これは、遅いソースから値を要求し、コードの速度を不必要に低下させたくない場合は、実行できます。それ以外の場合は、 [GlideQuery](https://servicenow-prod.fluidtopics.net/wvQK5jnpsdHG3mPNthJUYg#GlideQueryGlobalAPI "GlideQuery スクリプトインクルードは、サーバーサイドスクリプトのレコードデータに対して CRUD 操作を実行するための GlideRecord API の代替です。") API と [Stream](https://servicenow-prod.fluidtopics.net/fWTns~4uO4RxMnia01u7YQ#StreamGlobalAPI "ストリーム API は、レコードなどのアイテムのストリームとやり取りするためのメソッドを提供します。たとえば、 forEach() メソッドを使用して、 GlideQuery API によって返されるストリーム内の各レコードのステータスを更新できます。") API を使用してオプションのオブジェクトを返すことができます。  
注:  
このメソッドは静的です。このメソッドを使用するためにクラスのインスタンスは必要ありません。
{#Optional-lazy_F__table_edm_lwj_5mb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| lazyGetFn | 関数 | クエリの結果として単一のレコードを返す関数。例を次に示します。 var userGr = new GlideRecord('sys_user'); |
[表 : 15. パラメーター]

{#Optional-lazy_F__table_edm_lwj_5mb} {#Optional-lazy_F__table_fdm_lwj_5mb__entry__2}

| タイプ | 説明 |
|-|-|
| オプション | `Optional<result>` の形式のクエリ結果を含むオブジェクト。 |
[表 : 16. 返される内容]

{#Optional-lazy_F__table_fdm_lwj_5mb}  
この例では、GlideRecord クエリに基づいてオプションのオブジェクトを取得する方法を示します。

    var userOptional = global.Optional.lazy(function () {
        var userGr = new GlideRecord('sys_user');
        userGr.setLimit(1);
        userGr.query();
        return userGr.next() ? userGr.getUniqueValue() : null;
    });

    gs.info(userOptional);

出力：

    Optional<005d500b536073005e0addeeff7b12f4>

## オプション:map(関数 fn) {#ariaid-title10}

クエリーの結果に関数を適用します。
{#Optional-map_F__table_zkh_rgf_4mb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| fn | 関数 | クエリの結果に適用する関数。 |
[表 : 17. パラメーター]

{#Optional-map_F__table_zkh_rgf_4mb} {#Optional-map_F__table_alh_rgf_4mb__entry__2}

| タイプ | 説明 |
|-|-|
| オプション | `Optional<result>` の形式で関数によって更新されたクエリの結果を含むオブジェクト。 |
[表 : 18. 返される内容]

{#Optional-map_F__table_alh_rgf_4mb}  
この例では、値を大文字に変換してクエリーの結果に変換する関数を適用する方法を示します。

    var value = new global.GlideQuery('sys_user')
        .whereNotNull('first_name')
        .selectOne('first_name')
        .map(function (user) {
    	       return user.first_name.toUpperCase();
        });

    gs.info(value);

出力：

    Optional<ABEL>

## オプション:of(任意の値) {#ariaid-title11}

指定された値をオプションのオブジェクトにラップします。たとえば、GlideRecord クエリの結果を Optional オブジェクトでラップして、関連するメソッドを使用できます。
注:  
このメソッドは静的です。このメソッドを使用するためにクラスのインスタンスは必要ありません。
{#Optional-of_A__table_yhw_n1l_4mb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| value | 任意 | オプションのオブジェクト内の値。 |
[表 : 19. パラメーター]

{#Optional-of_A__table_yhw_n1l_4mb} {#Optional-of_A__table_zhw_n1l_4mb__entry__2}

| タイプ | 説明 |
|-|-|
| オプション | `Optional<value>` の形式で渡された値を含むオブジェクト。 |
[表 : 20. 返される内容]

{#Optional-of_A__table_zhw_n1l_4mb}  
この例では、GlideRecord クエリに基づいてオプションのオブジェクトを生成する方法を示します。

    var now_GR = new GlideRecord('task');
    now_GR.addQuery('approval', 'not requested'); 
    now_GR.query();
    var optional;
    if (now_GR.next()) {
    optional = Optional.of(now_GR.getUniqueValue());
    } else {
        optional = Optional.empty("no results");
    }

    gs.info(optional.get());

出力：

    00c269162d761010f87708b56757cbb3

## オプション:orElse(任意の defaultValue) {#ariaid-title12}

クエリが結果を返さない場合は、オプションのオブジェクト内にデフォルト値を追加します。
{#Optional-orElse__table_wl3_zzk_4mb__entry__3}

| 名前 | タイプ | 説明 |
|-|-|-|
| defaultValue | 任意 | クエリが結果を返さない場合は、オプションのオブジェクト内の値。 |
[表 : 21. パラメーター]

{#Optional-orElse__table_wl3_zzk_4mb} {#Optional-orElse__table_xl3_zzk_4mb__entry__2}

| タイプ | 説明 |
|-|-|
| 任意 | クエリが結果を返さない場合は、オプションのオブジェクト内の値。 |
[表 : 22. 返される内容]

{#Optional-orElse__table_xl3_zzk_4mb}  
この例は、クエリが正しくない場合でも値を返す方法を示しています。

    var user = new global.GlideQuery('sys_user')
        .get('1234', ['first_name', 'last_name'])
        .orElse({ first_name: 'Default', last_name: 'User' });

    gs.info(JSON.stringify(user))

出力：

    {
       "first_name":"Default",
       "last_name":"User"
    }


