---
sourceDocument: Xanadu IT Operations Management
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/ja-JP/xanadu/it-operations-management

 Release :

    - xanadu

ft:locale :

    - ja-JP

ft:publication_title :

    - Xanadu IT Operations Management

ft:clusterId :

    - itom

bundleId :

    - itom

workflow :

    - Technology


---

# ポリシーアクションスクリプトの作成

# ポリシーアクションスクリプトの作成 {#ariaid-title1}

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

ポリシーアクションスクリプトを使用して、クラウド要求の値を取得、更新、または設定します。{#create-policy-script__shortdesc-policy-action-scripts}

## 始める前に

必要なロール：sn_cmp.cloud_governor または admin。

## このタスクについて

スクリプトの使用の詳細については、「[クラウドスクリプトおよびクラウドスクリプトテンプレート](https://servicenow-prod.fluidtopics.net/Z15iR3DUoQbWAwx824kvZg "クラウドプロビジョニングとガバナンス アプリケーションでは、スクリプトの実行はクラウドスクリプトとクラウドスクリプトテンプレートに分割されます。スクリプトは詳細計画、理想ブロック、OS プロファイルで使用し、ポリシースクリプトを使用して要求フォーム属性を設定します。ポリシースクリプトがユーザーデータをオーバーライドすることはできません。")」を参照してください。

## 手順

1. クラウドアドミンポータルで、 統制ポリシー.
2. \[ポリシーアクションスクリプト\] タブで \[新規\] をクリックし、一意で意味のある \[名前\] および \[説明\] を入力し、フォームに記入して、\[送信\] をクリックします。  
   名前を入力すると、入力した名前を使用する変数を含むスクリプトが表示されます。{#create-policy-script__table_sqt_4gp_qz__entry__2}

   | フィールド | 説明 |
   |-|-|
   | アクションスクリプトカテゴリ | 別のカテゴリを選択するか、前のステップで作成したカテゴリをそのまま使用します。 |
   | スクリプト | スクリプト内の `customScripts` 関数を変更します。これだけが、変更する必要があるスクリプトの部分です。 |
   [ ]

   {#create-policy-script__table_sqt_4gp_qz}

## 例

次のスクリプト例では、ユーザーがユーザーグループに属しているかどうかを判別し、ユーザー指定のアプリケーションサーバーノード名の値を値 MyNodeName でオーバーライドします。  


    customScript : function(formData){
      var groups = this.parameters.userData.groups; 
        if( groups.length > 0){ 
          formData.App_Server_NodeName = "MyNodeName"; 
        }
      return formData;
    },

この例では乱数を返します。  


    customScript : function(formData){
      var min = 10000;
      var max = 99999;
      var num = Math.floor(Math.random() * (max - min + 1)) + min;
      formData.randomNumber = num + "";  
      return formData;
    },

次のスクリプト例では、 ベースシステム [GlideDateTime](https://developer.servicenow.com/app.do#!/training/article/app_store_learnv2_scripting_jakarta_server_side_scripting/app_store_learnv2_scripting_jakarta_glidedatetime?v=jakarta) クラスを使用して、リース日に 3 時間を追加します。  


    var SetLeaseShort = Class.create();
    SetLeaseShort.prototype = Object.extendsObject(sn_cmp.PolicyExecutionBase, {
    	customScript : function(formData){
    		// Manipulation of form parameters are supported. Changes in any other attributes
                  // will be ignored.
    		// The data available for manipulation is as follows:
    		// Form Data -  for example: StackName can be accessed through formData.StackName
    		// formData.StackName = "MyStack";
    		// User Data  - for example: User Id can be accessed through this.parameters.userData
    		// if(this.parameter.userData.userId == 'servicenowuserId')
    		// this.info("id = " + formData.StackName);
    		
    		// var leaseValue = now();
    		// leaseValue = leaseValue.setHours(leaseValue.getHours()+4);
    		// formData.LeaseEndDate = leaseValue;
    		
    		if (formData.hasOwnProperty("LeaseEndDate")) {
    			gdt = new GlideDateTime();
    			// 10800 = 3 hours
    			gdt.addSeconds(10800);
    			formData.LeaseEndDate = gdt.getDisplayValue();
    		}	
    		return formData;
    	},
    	execute: function() {
    		if(this.parameters !=  null && this.parameters.formData != null){
            	var inputData = JSON.parse(JSON.stringify(this.parameters.formData));
    		    var outputFormData = this.customScript(inputData);
                if( outputFormData != null){
                    this.parameters.formData = outputFormData;
                }
           	}
    		var output = {};
    		output.answer = this.parameters;
    		return JSON.stringify(output);
    	},
    	type : 'SetLeaseShort'
    });	

    var SetLeaseShortObj = new SetLeaseShort(inputAttributes);
    var outputParams = SetLeaseShortObj.execute();
    gs.info( "Output of script is = " + outputParams);

次のスクリプト例では、ユーザー指定の Azure Wordpress DNS 名フィールドを、フォームからスタック名と同じ名前に設定します。  

    var WordpressFill = Class.create();
    WordpressFill.prototype = Object.extendsObject(sn_cmp.PolicyExecutionBase, {
    	customScript : function(formData){
    		// Manipulation of form parameters are supported. Changes in any other attributes
            // will be ignored.
    		// The data available for manipulation is as follows:
    		// Form Data -  for example: StackName can be accessed through formData.StackName
    		// formData.StackName = "MyStack";
    		// User Data  - for example: User Id can be accessed through this.parameters.userData
    		// if(this.parameter.userData.userId == 'servicenowuserId')
    		//this.info("id = " + formData.StackName);
    		
    		formData.Azure_Wordpress_v6_vmDnsName = formData.StackName;
    		
    		return formData;
    	},
    	execute: function() {
    		if(this.parameters !=  null && this.parameters.formData != null){
            	var inputData = JSON.parse(JSON.stringify(this.parameters.formData));
    		    var outputFormData = this.customScript(inputData);
                if( outputFormData != null){
                    this.parameters.formData = outputFormData;
                }
           	}
    		var output = {};
    		output.answer = this.parameters;
    		return JSON.stringify(output);
    	},
    	type : 'WordpressFill'
    });	

    var WordpressFillObj = new WordpressFill(inputAttributes);
    var outputParams = WordpressFillObj.execute();
    gs.info( "Output of script is = " + outputParams);

**関連タスク**   

* [リソースにタグ付けするポリシーアクションスクリプトの例](https://servicenow-prod.fluidtopics.net/hEJtbqJkncc_BcLBkj440w "インスタンスは、請求とレポートのためにタグ付けされたリソースを追跡します。ポリシーアクションスクリプトは、リソースタグを追加および変更できます。この例では、ストレージボリュームリソースにタグ付けします。")

