JunshuO
ServiceNow Employee

sys_id を受け取り、レコードの調査を依頼されたものの、それがどのテーブルに属するのか見当もつかなかったことはありませんか。

ServiceNow で最も一般的なトラブルシューティングシナリオの 1 つは、対応するテーブルやレコードに関する情報がないまま sys_id を受け取ることです。

これは、多くの場合、次のときに発生します。

  • 統合のトラブルシューティング
  • ログ分析
  • スクリプトのデバッグ
  • データ移行アクティビティ
  • ワークフロー調査

ユースケース:

誰かが次のようなsys_idを共有しているとします: 8f3f5d7c1b2c1210d4c5a6b8cc4bcb45

ただし、次のものは提供されません:

  • テーブル名
  • レコード番号
  • アプリケーション情報
特に数百のテーブルを持つ大規模なインスタンスでは、手動での検索に時間がかかることがあります。複数のタスクテーブルを手動でチェックする代わりに、タスクテーブル階層を活用してレコードを自動的に見つけることができます。
次のスクリプトは、正確なテーブルをすばやく識別できます。

 

var id = '0ed1bc259359b110d44f38edfaba10f5';

var t = new GlideRecord('sys_db_object');
t.addQuery('super_class', '!=', '');
t.query();

while (t.next()) {

    try {
        var tableName = t.name.toString();
        var gr = new GlideRecord(tableName);

        if (gr.isValid() && gr.get(id)) {
            gs.print('Table: ' + tableName);
            gs.print('Display Value: ' + gr.getDisplayValue());

            if (gr.isValidField('number')) {
                gs.print('Number: ' + gr.getValue('number'));
            }

            break;
        }
    } catch (ex) {
        // Ignore inaccessible tables
    }
}
​

スクリプトの仕組み:
ステップ 1 :Sys ID を定義します

プレースホルダーを調査するsys_idに置き換えます。

ステップ 2 :利用可能なテーブルをクエリします
これは、別のテーブルを拡張する (スーパークラスを持つ) テーブルを取得します。
スクリプトはこれらのテーブルを反復処理し、レコードの検索を試みます。
ステップ 3 :テーブルごとに GlideRecord を作成します
テーブルごとに GlideRecord オブジェクトが動的に作成されます。
ステップ 4 :Sys ID が存在するかどうかを確認します
get() メソッドは、指定されたsys_idに一致するレコードを検索します。
見つかった場合、条件は true と評価されます。
ステップ 5 :テーブル名を出力します
 
サンプル出力:
テーブル:change_request
表示値:サーバーアップグレードの通常の変更
番号:CHG0030045

この記事は機械翻訳されております。最新は元となる記事をご覧ください: https://www.servicenow.com/community/developer-blog/find-an-unknown-record-table-name-number-using-o...。

免責事項: 一部の日本語は、翻訳ソフトウェアを使用してお客様の便宜のために翻訳されています。正確な翻訳をご提供できるよう相当な努力を払っておりますが、いかなる自動翻訳も人間の翻訳者に代わすることはなく、そのようなことは意図されておりません。翻訳は「現状のまま」提供されています。他言語への翻訳の的確性、信頼性または正確性については、明示または黙示を問わず、いかなる保証も行われません。翻訳ソフトには限界があるため、一部のコンテンツが正確に翻訳されていない場合があります。これらの資料の公用言語は英語です。翻訳の際に生じる相違または不一致は、コンプライアンスまたは履行の目的に関しては拘束力を有さず、法的効力はないものとします。

This article was machine translated and replicated from the original source: https://www.servicenow.com/community/developer-blog/find-an-unknown-record-table-name-number-using-o...。