ServiceNow MRVSの入力を必須にする方法

ServiceNow
スポンサーリンク

※ここでは以前作ったMRVSとカタログアイテムを使用しているため詳細は下記から。

ServiceNow Multi Row Varialbe Set (MRVS)の使い方
ServiceNow MRVSにカタログクライアントスクリプトで値を入力する方法

MRVSに設定している変数の必須項目(Mandatory)

MRVSに設定している変数にも必須(Mandatory)を設定することが可能ですが、MRVSの1行分を入力する画面でのみ必須化されるため、MRVS全体を必須にすることは出来ません。

変数のMandatoryにチェックを入れるとその項目が未入力の場合Add を押してもエラーが表示され行を追加出来ません。

MRVSを必須項目にする方法

①Catalog UI Policyを使う

Catalog UI PolicyShort descriptionに適当にを入力して作成します。

今回は常に必須化するため、Catalog Conditionは設定しません。

作成が完了したら、下の関連リストからNew をクリックしてCatalog UI Policy Actionを下記の表の通りに設定して作成します。

Variable nameusers
Order100
MandatoryTrue
VisibleLeave alone
Read OnlyLeave alone
Clear the variable valueFalse

全て作成が完了したらTry It をクリックして確認してみましょう。
Usersの横にマークが付いていればOKです。何も入力せずにOrder Now をクリックするとエラーメッセージが表示されます。

Catalog UI Policyの場合エラーメッセージの変更は出来ないと思います。
また、カタログクライアントスクリプトでMRVSに値を設定した際にから*に変わらないので解決方法がわかる方は教えてほしいです…

②Catalog Client Scriptを使う

カタログクライアントスクリプトの場合はonSubmitを作成します。
MRVSの値を取得して未入力の場合にはエラーメッセージを表示して送信をキャンセルすることで必須化させます。

まず、下記の画像のようにカタログクライアントスクリプトを設定して作成します。スクリプトには下記を設定します。

function onSubmit() {
    var mrvs = g_form.getValue("users");
    console.log("### MRVS: " + mrvs);
    if(mrvs == "[]" || mrvs == "") {
        g_form.addErrorMessage("Usersに値が入っていません。");
        return false;
    }
}

カタログクライアントスクリプトが完了したらTry It を押して確認してみましょう。
何も入力せずにすぐOrder Now を押します。

次にService Portalで確認してみましょう。
Service Portalから対象のカタログアイテムを開きます。先ほどと同じように何も入力せずにRequest を押します。

if(mrvs == "[]" || mrvs == "") 

Consoleの画像に表示したログを見ればわかりますが、Plattform UIとService Portalで未入力の場合に取得したMRVSの値が変わります。

  • Plattform UI:”[]”
  • Service Portal:””(empty)

Variable Set attributesに必須化するためのオプションみたいなのが追加されればもっと楽にMRVS全体を必須化出来るんですが、現状そのようなものは無いため上記のようにカタログクライアントスクリプトかUI Policyを作成する必要があります…

タイトルとURLをコピーしました