スクリプトインクルード

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:17分
  • スクリプトインクルードは、サーバー上で実行される JavaScript の格納に使用されます。

    スクリプトインクルードを作成して、サーバースクリプトで使用できるように JavaScript の関数およびクラスを格納します。各スクリプトインクルードは、オブジェクトクラスまたは関数のいずれかを定義します。

    スクリプトインクルードは要求時にのみロードされるため、グローバルビジネスルールの代わりにスクリプトインクルードを使用することを検討してください。詳細については、「Glide AJAX 対応スクリプトインクルードのプライバシー設定」と「ディスカバリースクリプトインクルード」を参照してください。

    スクリプトのその他の例については、「有用なスクリプト」を参照してください。

    スクリプトインクルードフォーム

    スクリプトインクルードには、名前、説明、およびスクリプトがあります。また、それらがアクティブかどうか、およびクライアントスクリプトから呼び出すことができるかどうかも指定します。スクリプトインクルードフォームを使用して、既存のスクリプトインクルードを表示するか、新しいスクリプトインクルードを作成します。

    スクリプトインクルードにアクセスするには、次に移動します: すべて > システム定義 > スクリプトインクルード.

    表 : 1. スクリプトインクルードフォーム
    フィールド 説明
    名前 スクリプトインクルードの名前。クラスを定義する場合、これはクラスの名前、プロトタイプ、およびタイプと一致する必要があります。クラスレス (オンデマンド) スクリプトインクルードを使用する場合、名前は関数名と一致する必要があります。
    API 名 スクリプトインクルードの内部名。スコープ外のアプリケーションからスクリプトインクルードを呼び出すために使用します。
    Glide AJAX 有効 (またはクライアント呼び出し可能) スクリプトインクルードは、クライアントスクリプト、リスト/レポートフィルター、参照修飾子で使用できます。また、URL の一部として指定することもできます。Glide AJAX 対応スクリプトインクルードは GlideAjax から呼び出され、ユーザーはスクリプトインクルードに関連付けられた ACL を満たす必要があります。選択すると、[アクセス制御] 関連リンクが使用可能になります。詳細については、「Glide AJAX 対応スクリプトインクルードのプライバシー設定」を参照してください。
    モバイルコール可能 スクリプトインクルードは、モバイルデバイスから呼び出されたクライアントスクリプトで使用できます。
    サンドボックス有効化 スクリプトインクルードは、クエリ条件など、スクリプトサンドボックスから呼び出されるスクリプトで使用できます。
    重要:
    スクリプトインクルードは、必要な場合にのみスクリプトサンドボックスで使用できるようにする必要があります。

    スクリプトサンドボックスの詳細については、「 スクリプトサンドボックス」を参照してください。

    アプリケーション このスクリプトインクルードが存在するアプリケーション。
    アクセス可能
    このスクリプトインクルードにアクセスできるアプリケーションを設定します。
    すべてのアプリケーションスコープ
    任意のアプリケーションスコープからアクセスできます。
    このアプリケーションスコープのみ
    現在のアプリケーションスコープからのみアクセスできます。
    アクティブ 選択すると、スクリプトインクルードが有効になります。アクティブなフィールドの選択を解除して、スクリプトインクルードを無効にします。
    説明 スクリプトインクルードに関する説明的なコンテンツを提供します。
    スクリプト 他のスクリプトから呼び出されたときに実行するサーバーサイドスクリプトを定義します。

    スクリプトは、単一の JavaScript クラスまたはグローバル関数を定義する必要があります。クラス名または関数名は [名前] フィールドと一致する必要があります。

    パッケージ このスクリプトインクルードを含むパッケージ。
    作成者 このスクリプトインクルードを作成したユーザー。
    更新者 このスクリプトインクルードを最後に更新したユーザー。
    保護ポリシー
    スクリプトインクルードの保護レベルを設定します。
    なし
    このダウンロードまたはインストールされたスクリプトインクルードの読み取りと編集をすべてのユーザーに許可します。
    読み取り専用
    このダウンロードまたはインストールされたスクリプトインクルードからの値の読み取りをすべてのユーザーに許可します。スクリプトインクルードをダウンロードまたはインストールするインスタンスのスクリプト値は、どのユーザーも変更できません。
    保護
    アプリケーション開発者に知的財産権保護を提供します。スクリプトインクルードをダウンロードした顧客は、スクリプトフィールドの内容を表示できません。スクリプトは、権限のないユーザーがプレーンテキストで表示することを防ぐために、メモリ内で暗号化されます。
    フォームビューの関連リスト:
    バージョン スクリプトインクルードのすべてのバージョンを表示します。バージョンを比較したり以前のバージョンに戻したりするには、このリストを使用します。「バージョン」を参照してください。
    アクセス制御 [Glide AJAX を有効にする] が選択されている場合に利用可能になり、標準スクリプトインクルードでは非表示になります。パブリックアクセスが許可されていない場合に、スクリプトインクルードを不正使用から保護するために使用します。

    スクリプトインクルードの使用

    スクリプトインクルードは [システム定義] または [システム UI] の下にあります。既存のスクリプトインクルードをスクリプトから呼び出すことも、新しいスクリプトインクルードを作成することもできます。

    まったく新しいスクリプトインクルードを作成するときには、既存のいずれかのスクリプトインクルードの形式に従うこともできます。この例では、スクリプトインクルードの名前は NewInclude であり、myFunction と呼ばれる 1 つの関数があります。スクリプトインクルードの名前が、クラスの名前、プロトタイプ、およびタイプと一致することが重要です。新しいスクリプトインクルードを作成して名前を付けると、クラスとプロトタイプが適切に設定されたコードスニペットが提供されます。

    var NewInclude =Class.create();
     
    NewInclude.prototype={
      initialize :function(){},
     
      myFunction :function(){<Put function code here>},
     
      type :'NewInclude'};

    次のように myFunction 行を使用できます。

    var foo =new NewInclude();
    foo.myFunction();

    Glide AJAX 対応スクリプト インクルード

    Glide AJAX 対応スクリプトインクルードを使用すると、クライアントスクリプト、リスト/レポートフィルター、参照修飾子でスクリプトインクルードを使用できるか、URL の一部として指定されている場合にスクリプトインクルードを使用できるようになります。

    始める前に

    必要なロール:admin

    手順

    1. 移動先 システム定義 > スクリプトインクルード.
    2. [新規] を選択するか、表示または編集する既存のスクリプトインクルードを選択します。
      スクリプトインクルードの記述の詳細については、「スクリプトインクルードの使用」を参照してください。
    3. フォームに入力し、[ Glide AJAX 有効 ] オプションを選択します。
      ユーザーロールを選択するためのロールセレクターがポップアップし、アクセス制御エントリが自動的に作成されます。ユーザーロールを選択し、[OK] をクリックします。ユーザーロールウィンドウを選択します。
      注:
      ロールセレクターウィンドウを無効にするには、glide.script.ccsi.enable_acl_create_uxfalse に設定します。

      ロールベースのアクセス制御を含むスクリプトインクルードレコードが作成されます。[ Glide AJAX を有効にする (Glide AJAX enabled )] チェックボックスをオンにすると、アクセス制御関連リンクが利用可能になります。

    Glide AJAX 対応スクリプトインクルードのプライバシー設定

    Glide AJAX 対応スクリプトインクルードのプライバシー設定は、Glide AJAX 対応スクリプトインクルードにアクセスできるユーザーを決定します。

    プライベートプライバシー設定

    プライベートプライバシー設定は、公開ページにアクセスするゲストが Glide AJAX 対応のスクリプトインクルードにアクセスできないことを意味します。非公開スクリプトは、ログインしていないユーザーは実行できません。

    公開プライバシー設定

    公開プライバシー設定は、適切な HTTP 要求を作成するログインしていないユーザーが、クライアントスクリプトを実行できることを意味します。クライアントスクリプトが機密情報を提供する場合、これによりセキュリティ上の問題が発生する可能性があります。

    次のスクリプトインクルードは、デフォルトでは公開のままです。これは、UI ページを公開または非公開にするが、次のスクリプトインクルードにアクセスする必要があるためです。
    • GlideSystemAjax
    • SysMessageAjax
    • KnowledgeMessagingAjax
    • KnowledgeAjax
    • PasswordResetAjax

    すべての Glide AJAX 対応スクリプトインクルードのプライバシーを設定する

    すべての Glide AJAX 対応スクリプトインクルードのプライバシー設定を変更します。

    すべての Glide AJAX 対応スクリプトインクルードをさらに制御するために、アドミニストレーターは glide.script.ccsi.ispublic プロパティを追加できます。このプロパティは、すべての公開または非公開にすることで、Glide AJAX 対応スクリプトインクルードのヴィジビリティを変更します。プロパティを以下のとおり構成します。

    表 : 2. プロパティの構成
    タイトル プロパティ
    名前 glide.script.ccsi.ispublic
    タイプ true | false
    false
    注:
    このプロパティの詳細については、「インスタンスセキュリティ強化設定」の「Require authentication by default for client-callable script includes [Updated in Security Center 1.3]」を参照してください。

    単一の Glide AJAX 対応スクリプトインクルードのプライバシーを変更する

    isPublic() 関数を追加して、単一の Glide AJAX 対応スクリプトインクルードのプライバシー設定を変更します。

    isPublic() 設定は glide.script.ccsi.ispublic プロパティよりも優先されます。たとえば、プロパティが false に設定されていて、すべての Glide AJAX 対応スクリプトインクルードがプライベートになり、スクリプトが isPublic()true に設定した場合、スクリプトは公開されます。

    単一の Glide AJAX 対応スクリプトインクルードのプライバシーを変更するには、スクリプトインクルードに次のメソッドを追加します。

    isPublic:function(){return[true/false];},
    NewInclude クライアントスクリプトを非公開にします。
    var NewInclude =Class.create();
     
    NewInclude.prototype={
       initialize:function(){},
     
       myFunction:function(){//Put function code here},
       isPublic:function(){return false;},
     
       type:'NewInclude'};

    Glide AJAX が有効になっているスクリプトインクルードのセキュリティ

    Glide AJAX 対応スクリプトインクルードを不正使用防止対処します。顧客アプリケーションで作成されたすべてのレコードについて、セキュリティリスクの軽減に役立つ推奨事項が表示されます。

    Glide AJAX 対応のスクリプトインクルードを作成するときに、次のセキュリティ推奨事項がまだ構成されていない場合は、それらが表示されます。

    • スクリプトインクルードにパブリックアクセスがない場合は、アクセス制御を追加または定義します。
    • スクリプトがデータベースにクエリを実行する場合は、GlideRecord API の代わりに GlideRecordSecure を使用してセキュリティを強化します。

      Glide AJAX 対応のセキュリティ推奨事項。

      注:
      セキュリティ推奨メッセージを無効にするには、sys_properties テーブルでプロパティ glide.script.ccsi.customer_scoped.security_msgs_enabledfalse に設定します。デフォルト値は true になっています。

    セキュリティコンプライアンスの詳細については、「インスタンスセキュリティ強化設定」を参照してください。

    ディスカバリースクリプトインクルード

    ディスカバリー スクリプトインクルードは、ディスカバリー タスクを実行するために使用できる JavaScript クラスを定義します。

    注:
    discovery_admin ロールを持つユーザーは、スクリプトインクルードを書き込むことができます。サーバー側およびクライアント側のスクリプティングのベストプラクティスに従って、セキュリティ上の問題を防止します。詳細については、ナレッジ記事「KB0550828」を参照してください。

    GlideRecordUtil を使用した GlideRecord の操作

    GlideRecordUtil は、ディスカバリー 実行時に、GlideRecord 操作に役立つメソッドを提供するユーティリティクラスです。使用可能なメソッドの説明については、「GlideRecordUtil」を参照してください。

    GlideRecord インスタンスの取得

    指定された構成アイテムの、正しいクラスとテーブルの GlideRecord インスタンスを取得するには、getCIGR(sys_id) メソッドを使用します。たとえば次のコードは、CI の GlideRecord を取得します。その sys_id は 2dfd7c8437201000deeabfc8bcbe5d56 です。
    var now_GR = new GlideRecordUtil().getCIGR("2dfd7c8437201000deeabfc8bcbe5d56");
    クラスタイプが未知の場合に階層テーブルを取得するには、getGR(base_table, sys_id) メソッドを使用します。たとえば、コンピュータークラス CI の GlideRecord を取得するには、コンピュータークラス、Windows サーバー、または Linux サーバークラスを区別することが必要になる場合があります。このメソッドを使用すると、GlideRecord が正しいクラスを持っていることが保証されます。異なるクラスには異なる属性があります。このユースケースでは、Windows サーバーは Linux サーバーとは異なる属性を持ちます。次の例は、正しいクラスの GlideRecord をその属性とともに取得する方法を示しています。
    var now_GR = new GlideRecordUtil().getGR( "cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");

    GlideRecord のすべてのフィールドの取得

    getFields(now_GR) メソッドは、指定された GlideRecord に存在するすべてのフィールドまたは属性の JavaScript オブジェクト (ハッシュマップなど) を返します。
    var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
    var fields = new GlideRecordUtil().getFields(now_GR);
    gs.log(fields.join(" ")); // List all the fields that are in a computer CI

    GlideRecord オブジェクトフィールドの入力

    populateFromGR(hashmap, gr,ignore) メソッドを使用すると、GlideRecord オブジェクトを取得して、そのフィールドと値を JavaScript オブジェクトに入力できます。3 番目の引数 (ignore) は、特定のフィールドを除外できるようにするオプションの JavaScript オブジェクトです。たとえば、GlideRecord の sys_created_by または sys_updated_by フィールドを気にする必要がない場合があります。
    var objectToPopulate = { }; 
    var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56"); 
    var ignore = {"sys_created_on": true, "sys_updated_by": true}; 
    new GlideRecordUtil().populateFromGR(objectToPopulate, now_GR, ignore); 
    // Now the objectToPopulate contains field/value pairs from the computer GlideRecord
    mergeToGR(hashmap, gr,ignore) メソッドを使用すると、GlideRecord にフィールド/値のペアのオブジェクトを入力できます。ignore 引数は、指定されたフィールドの更新を停止します。次のコード例では、コンピューターレコードの name フィールドと os フィールドが更新されますが、sys_created_by フィールドは更新されません。
    var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56"); 
    var obj = {"name": "xyz", "os": "windows 2000", "sys_created_by", "aleck.lin"};
    var ignore = {"sys_created_by": true}; 
    new GlideRecordUtil().mergeToGR(obj, gr, ignore);
    gr.update();

    テーブル階層の取得

    getTables(table) メソッドは、次の例に示すように、テーブル階層のリストを返します。
    var tables = new GlideRecordUtil().getTables("cmdb_ci_linux_server");
    gs.log(tables.join(",")); 
    // The result would be "cmdb_ci, cmdb_ci_computer, cmdb_ci_server, cmdb_ci_linux_server".

    DiscoveryException と AutomationException の使用

    ディスカバリー センサーとセンサー関連のスクリプトを記述するときに、 DiscoveryException または AutomationException を使用して、ディスカバリー から例外が発生したことを示すことができます。

    DiscoveryException スクリプトインクルードは AutomationException を拡張し、それは GenericException クラスを拡張します。次の例では、DiscoveryException を使用して例外をスローします。
    function foo() { 
      if(//condition matches) throw new DiscoveryException("The message", "The cause"); }
    最初の引数は例外のメッセージを受け取り、2 番目の引数 (オプション) は例外の原因を受け取ります。次の例に示すように、例外を捕捉してログに記録することもできます。
    try {
      foo(); 
    } 
    catch(e) { 
       if(e instanceof DiscoveryException)
         gs.log("A DiscoveryException occurred. It is " + e. getMessage() + " caused by " + e.getCause()); }

    上記の例は、AutomationException にも適用されます。DiscoveryException は通常、特にディスカバリーに例外処理を提供するために使用され、AutomationException はオーケストレーションと ディスカバリー の両方に適用される例外処理に使用されます。