0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[ServiceNow] 拡張されたテーブルへClassを変更するScriptの実証

Last updated at Posted at 2025-03-13

はじめに

ServiceNowでは、Task(task)やBase CI(cmdb)テーブルは、それぞれを頂点に子ととして様々な拡張テーブルを持っています。例えば、Incident(incident)やProblem(problem)はTaskを拡張したテーブルです。
ここでは、上位テーブルに作成したレコードを下位テーブルに移すScriptを検証します。

前提

Hardware(cmdb_ci_hardware)テーブルは、Base CIテーブルから見て子孫のテーブルの一つですが、さらに多くの子孫テーブルを持ち、CIでも大きくハードウェアに分類されるものが登録されるテーブルです。このテーブルにあるレコードを下位テーブルであるComputer(cmdb_ci_computer)に、Scriptで移してみましょう。

Script

検証ですので、ScriptはScripts - Backgroundで実行します。
実行するScriptは以下のとおりです。
今回はCIの名前が「Computer100」であるものをハードコードで指定しています。

Script
var targetName = 'Computer100';

var gr = new GlideRecord('cmdb_ci_hardware');
gr.addQuery('name', targetName);
gr.query();
 
if (gr.next()) {
    gs.info('レコードを更新します: ' + gr.sys_id);
    gr.sys_class_name = 'cmdb_ci_computer';
    gr.sys_class_path = '/!!/!2/!(';
    gr.update();
    
	gr.initialize();
	gr.addQuery('name', targetName);
	gr.query();
    if (gr.next()) {
		gs.info('レコードが更新されました: ' + gr.sys_id);
	}
} else {
    gs.info('該当するレコードが見つかりませんでした。');
}

Scriptの出力結果は以下のとおりです。
念の為、レコードの更新前後で、sys_idが変わっていないことも確認できます。

スクリーンショット 2025-02-28 18.16.37.png

実際のレコードで確認する。

変更前と変更後で、無事Classが変わっていることがわかります。

(変更前)
スクリーンショット 2025-02-28 18.15.43.png

(変更後)
スクリーンショット 2025-02-28 18.16.19.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?