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

@Ankur Bawiskar 

 

For confirmation and learning purpose we can attachment file to sys_email or not?

 

Regards,

Reshma

 

@shaik11 

you can attach if this requirement is for your learning purpose and not an actual business requirement.

 

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

@Ankur Bawiskar 

 

Can you please provide particular code to achieve that requirement.

 

Regards,

Reshma