LoginSignup
4
6

More than 3 years have passed since last update.

ServiceNow - Scripted REST APIの作成

Last updated at Posted at 2020-11-03

概要

ServiceNowテーブルAPIを利用すると簡単にテーブルのデータを取得したり更新することが可能。しかし、次のような制限があります:

  • 参照フィールドの場合はsys_idを指定する必要がある
  • 1回の呼び出しでテーブル1つからデータしか取得できない
  • API毎にセキュリティ(ACL)を設定できない

例えばテーブルAPIでは指定したインシデント番号のチケットに添付したファイルをダウンロードするには数回の呼び出しが必要になります。一回の呼び出しでファイルをダウンロードすり場合はScripted REST APIを作成します。
今回はよりScripted REST APIの基本を学ぶために指定したメールアドレスのユーザ情報を返すスクリプトを作成します。

Scripted REST API

アプリケーションナビゲータから「Scripted REST API」を開き、次のように設定します。
image.png

「Resources」タブの「New」ボタンを押下して実行するスクリプトを記述します。今回はURIのメールアドレスを指定するようにします。
image.png

URLのパラメータとして指定できるようにする場合は前頁の「Query Parameters」をパラメータを作成します。

Scripted REST APIリソーススクリプト

リソースのスクリプトにすべてのコードを記述することもできますが、保守性を考えてテーブル検索スクリプトをスクリプトインクルードに記述して、Scripted REST APIリソースではそのスクリプトを呼び出すようにします。

(function process( /*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
    return new getUserDetails().getdetails(request.pathParams.userid);
})(request, response);

スクリプトインクルード

多くの場合はクライアントから呼び出されますが、今回はサーバ側での呼び出しになるので「Client callable」のチェックは外します。
image.png

var getUserDetails = Class.create();
getUserDetails.prototype = {
    initialize: function() {},

    getdetails: function(email) {
        var userInfo = [];
        try {
            var grUser = new GlideRecord('sys_user');
            if (grUser.get('email', email)) {
                userInfo.push({
                    'name': grUser.name,
                    'email': grUser.email,
                    'company': grUser.company.name
                });
            }
            return userInfo;
        } catch (e) {
            gs.error("ERROR=", e);
        }
    },

    type: 'getUserDetails'
};

実行

REST API Explorerから実行すると次のようにJSONメッセージが戻ります。

{
  "result": [
    {
      "name": "Lucius Bagnoli",
      "email": "lucius.bagnoli@example.com",
      "company": "ACME Japan"
    }
  ]
}
4
6
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
4
6