Adding latest attachment from sys_attachment table to sys_email record

shaik11
Tera Expert

Hi All,

 

When I am trying to add attachment from sys_attachment table to sys_email record using GlideSysAttachment method in Business Rule, it is adding multiple attachments with same filename.

My requirement is to add only one latest attachment created.

 

(function executeRule(current, previous /*null when async*/) {

var s_Attach = new GlideRecord('sys_attachment');
s_Attach.addEncodedQuery('file_name=Servers_Information.csv^table_name=sys_attachment');
s_Attach.orderByDesc('sys_created_on');
s_Attach.setLimit(1);
s_Attach.query();
if(s_Attach.next()){
var sSysID = s_Attach.table_sys_id;
gs.info('the sSysID is for Attachment '+sSysID);
}

var sTable = 'sys_attachment';
var tTable = 'sys_email';
var tSysID = current.sys_id;
gs.info('the tSysID '+tSysID);
var copyAtt = new GlideSysAttachment();
copyAtt.copy(sTable,sSysID,tTable,tSysID); // Attaching the Attachment to the email
gs.info('the notifications sysID'+tSysID);
gs.info('the table name is '+tTable);

})(current, previous);

 

 

Please provide inputs to achieve it.

 

Regards,

Reshma.

1 ACCEPTED SOLUTION

@shaik11 

are you sure the file name you are comparing is exact?

similar script has worked for me earlier

My BR was After Insert on sys_email

AnkurBawiskar_0-1677668826626.png

 

try checking by not adding file name in query

(function executeRule(current, previous /*null when async*/) {

	var s_Attach = new GlideRecord('sys_attachment');
	s_Attach.addEncodedQuery('table_sys_id=' + current.instance);
	s_Attach.orderByDesc('sys_created_on');
	s_Attach.setLimit(1);
	s_Attach.query();
	if(s_Attach.next()){
		var rec = new GlideRecord('sys_email_attachment');
		rec.initialize();
		rec.attachment = s_Attach.sys_id;
		rec.file_name = s_Attach.file_name;
		rec.source = 'notification';
		rec.content_disposition = 'attachment';
		rec.email = current.sys_id;
		rec.insert();
	}

})(current, previous);
Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

12 REPLIES 12

@shaik11 

why to store that file on sys_email record?

Your requirement must be to send the latest file via email notification right?

Glad to know that it worked.

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Ankur Bawiskar 

 

My requirement is to add files to sys_email record.

We are not attaching file from email notication. We are attaching latest file to "sys_email" record by using "after business rule".

 

Regards,

Reshma.

 

@shaik11 

why to add to sys_email?

Who will visit sys_email and view the file?

End user is not supposed to visit that table

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Ankur Bawiskar 

As per requirement for testing and development we need to add latest sys_attachment file to sys_email record.

Please provide inputs .

 

Regards,

Reshma

 

 

 

 

@shaik11 

if you just want to test then anyhow testers can check email logs table and check if the email triggered has file or not

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader