概要
1つの添付ファイルを必須にすることはServiceNowの標準機能で行うことが可能。しかし、添付ファイル2個を必須にする場合は標準機能では行えない。
既に公開されている手順はあるが、DOM操作を利用されている。ServiceNow社からはDOM操作は避けるようにされているのでDOM操作なしでの方法を考案。
情報として、(DOM操作は非推奨)
https://docs.servicenow.com/bundle/helsinki-application-development/page/script/client-scripts/reference/r_AvoidDOMManipulation.html
手順
フォームに次のonSubmitスクリプトを作成する。
'''
function onSubmit() {
var attachmentRequired = 2; // 必須にする添付ファイル数
if (window == null && this != null) { // サービスポータルでのチェック
if (this.document.getElementsByClassName('get-attachment').length < attachmentRequired) {
g_form.addErrorMessage('At least ' + attachmentRequired + ' attachments are required.');
return false;
}
} else { // UIページでのチェック
var cartSysId = g_form.getParameter("sysparm_item_guid");
try {
var grAttach = new GlideRecord("sys_attachment");
grAttach.addQuery('table_sys_id', cartSysId);
grAttach.query();
var cnt = 0;
while (grAttach.next() && cnt < attachmentRequired) {
cnt++;
}
if (cnt < attachmentRequired) {
g_form.addErrorMessage('At least ' + attachmentRequired + ' attachments are required.');
return false;
}
} catch (e) {}
}
}