はじめに
ServiceNowのシステムプロパティは、システム全体で共通して利用する設定値を保持できます。業務要件によっては、単なる数値や文字列、あるいはカンマ区切りによる1次元配列的なデータだけでなく、2次元以上の配列データを扱いたい場合があります。たとえば、「部門」と「会社」を1組とする任意の組み合わせなどです。
このような場合には、システムプロパティにJSON形式の値を登録して利用する方法が有効です。以下では、システムプロパティに格納したJSON形式の値をJavaScriptで取得し、配列およびオブジェクトの両方を処理する例を示します。
方法1(JSON配列形式)
- System properties
- Name: (適当。ここでは、test.prop.pairs_dept_comp1とする。)
- Value: 以下
System Property - Value
[
["Dev1","Comp1"],
["Dev2","Comp2"]
]
- Script例
Script
var raw = gs.getProperty("test.prop.pairs_dept_comp1");
var matrix = JSON.parse(raw);
for (var i = 0; i < matrix.length; i++) {
var pair = matrix[i]; // ["deptPrefix", "compName"]
var deptName = pair[0];
var compName = pair[1];
gs.info("Row " + i + ": Department Name:" + deptName + ", Company Name:" + compName);
}
- 実行結果
*** Script: Row 0: Department Name:Dev1, Company Name:Comp1
*** Script: Row 1: Department Name:Dev2, Company Name:Comp2
方法2(JSONオブジェクト形式)
- System properties
- Name: (適当。ここでは、test.prop.pairs_dept_comp2とする。)
- Value: 以下
System Property - Value
{
"records" : [
{
"department" : "Dev1",
"company" : "Comp1"
},
{
"department" : "Dev2",
"company" : "Comp2"
}
]
}
- Script例
Script
var raw = gs.getProperty("test.prop.pairs_dept_comp2");
var obj = JSON.parse(raw);
for (var i = 0; i < obj.records.length; i++) {
var dept = obj.records[i].department;
var comp = obj.records[i].company;
gs.info("Record " + i + ": Department Name:" + dept + ", Company Name:" + comp);
}
- 実行結果
*** Script: Record 0: Department Name:Dev1, Company Name:Comp1
*** Script: Record 1: Department Name:Dev2, Company Name:Comp2