- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Monday
Hi i want to display the message as soon as possible whenever an attachment is attached to the case and the combine size of attachments exceed 18mb then i want to show the error message immediately is this possible?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yesterday
Small change in my Script & it worked fine for me
-> I added size bytes for the current file also, I forgot it earlier
(function executeRule(current, previous /*null when async*/ ) {
// Define your limit in bytes (e.g., 10MB)
var maxSize = 18 * 1024 * 1024; // 18 MB
var totalSize = 0;
var gr = new GlideRecord("sys_attachment");
gr.addQuery("table_sys_id", current.table_sys_id);
gr.query();
while (gr.next()) {
totalSize = totalSize + parseInt(gr.size_bytes);
}
totalSize = totalSize + parseInt(current.size_bytes);
if (totalSize > maxSize) {
gs.addErrorMessage('Total Attachment size exceeds the limit of 18 MB.'); // User-friendly message
current.setAbortAction(true); // Prevents the attachment from being saved
}
})(current, previous);
Output: I tried to add 3rd file and it exceeded 18MB and error message thrown and file not added
💡 If my response helped, please mark it as correct ✅ and close the thread 🔒— this helps future readers find the solution faster! 🙏
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Tuesday
Hello @Raze00 ,
Yes this can be achieved using Before business rule . I Implemented this on incident table .
you can refer following code :
(function executeRule(current, previous /*null when async*/ ) {
var gr = new GlideRecord('sys_attachment');
gr.addQuery('table_sys_id', current.sys_id);
gr.addQuery('table_name', current.getTableName());
gr.query();
var size = 0;
while (gr.next()) {
size += gr.size_bytes;
}
if (size > 18* 1024 * 1024) {
// greater than 18 MB
gs.addErrorMessage('File size is greater than 18 MB');
current.setAbortAction(true);
} else {
gs.addErrorMessage('File size is within limit');
current.setAbortAction(false);
}
// Add your code here
})(current, previous);
If this helps you then mark it as helpful and accept as solution.
Regards,
Aditya,
Technical Consultant
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Tuesday
will this trigger as soon as the attachment is added ? because i want the error to display as soon as the attachment is uploaded on any case.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Wednesday
Hello @Raze00 ,
Yes you can change code slightly.
Add before business rule on sys_attachment table
(function executeRule(current, previous /*null when async*/ ) {
if(current.table_name==your table name)
{
size=current.size_bytes.
if (size > 18* 1024 * 1024) {
// greater than 18 MB
gs.addErrorMessage('File size is greater than 18 MB');
current.setAbortAction(true);
} else {
gs.addErrorMessage('File size is within limit');
current.setAbortAction(false);
}
}
}
If this helps you then mark it as helpful and accept as solution.
Regards,
Aditya,
Technical Consultant
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yesterday
Hello @Raze00 ,
If this response helps you then mark it as helpful and accept as solution.
Regards,
Aditya,
Technical Consultant
