LoginSignup
1
1

More than 3 years have passed since last update.

ServiceNow - 添付ファイルを制限する

Last updated at Posted at 2020-10-17

概要

ServiceNow全体で利用できる添付ファイルの拡張子はシステムプロパティ「glide.attachment.extensions」で制限できる。またファイルサイズの制限も可能である。
https://docs.servicenow.com/bundle/paris-platform-administration/page/administer/form-administration/task/t_DisablingTheDragAndDropFeature.html

インシデントフォームに制限を掛ける

しかし、インシデントフォームのみに制限を掛けたりファイル数を制限する場合は次のようにする。(サービスカタログでは正常に動作しません)

プロパティの作成

添付ファイル数を制限するプロパティ(ozawa.file.attachments.max)と許可する拡張性(ozawa.file.attachments.ext)を作成する。
image.png

フォームのクライアントスクリプト

フォームにonSubmit()スクリプトを作成

function onSubmit() {
    var ajax = new GlideAjax('CheckFileAttachments');
    ajax.addParam('sysparm_name', 'validateAttachments');
    ajax.addParam('sysparm_sys_id', g_form.getUniqueValue());
    ajax.getXMLAnswer(function(answer) {
        if (answer != "true") {
            g_form.addErrorMessage('File attachments are illegal');
            return false;
        }
    });
}

スクリプトインクルード

var CheckFileAttachments = Class.create();
CheckFileAttachments.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    validateAttachments: function() {
        var extMax = gs.getProperty('ozawa.file.attachments.max');
        var extList = gs.getProperty('ozawa.file.attachments.ext').split(',');
        var incSysid = this.getParameter('sysparm_sys_id');

        var gr = new GlideRecord('sys_attachment');
        gr.addQuery('table_sys_id', incSysid);
        gr.query();
        if (gr.getRowCount() > extMax) {
            return false;
        }

        while (gr.next()) {
            var filename = gr.file_name;
            var found = false;
            for (var i = 0; i < extList.length; i++) {
                if (filename.endsWith('.' + extList[i])) {
                    found = true;
                    break;
                }
            }
            if (!found) {
                return false;
            }
        }
        return true;
    },

    type: 'CheckFileAttachments'
});

サービスカタログに制限を掛ける

サービスカタログの場合はポータルからだとエラーになりますが、UIからでは次のスクリプトが制限することができます。
サービスカタログの場合はプロパティとスクリプトインクルードは上の同じですがクライアントスクリプトが異なります。

クライアントスクリプト

function onSubmit() {
    var ajax = new GlideAjax('CheckFileAttachments');
    ajax.addParam('sysparm_name', 'validateAttachments');
    ajax.addParam('sysparm_sys_id', g_form.getParameter("sysparm_item_guid"));
    ajax.getXMLAnswer(function(answer) {
        if (answer != "true") {
            g_form.addErrorMessage('File attachments are illegal');
            return false;
        }
    });
}
1
1
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
1
1