Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Email attachments aren't getting passed on to Request, RITM, or Task tickets

Lee Kraus2
Tera Guru

Hello all,

 

I'm trying to figure out why I can't get email attachments to be added to my Request tickets generated from inbound email actions. Whenever I look up the email that came in (System Mailboxes - Received), the attachment is there, but drilling down a little shows that the Action was --None--. I've looked up some other community questions and it seems like I might need to use GlideSysAttachments.copy(), but I don't know where to put it in my script. I'm assuming for the arguments of that function I need the sys_email_attachments table, the ability to call the sys_id of that attachment, the sc_request table (since I want to have the attachment on this generated request) and then call the sys_id of the request I generated. I'm not certain what those would be though:

 

GlideSysAttachment.copy('sys_email_attachment', <no idea this variable>, 'sc_request', <no idea this variable>)

 

What are those variables I need to place there?

 

Below is my code I've used in my inbound email action to generate the Request, RITM, and Task tickets:

 

(function runAction(/*GlideRecord*/ current, /*GlideRecord*/ event, /*EmailWrapper*/ email, /*ScopedEmailLogger*/ logger, /*EmailClassifier*/ classifier)
{

/*********** Update RITM *************/
var cartId = GlideGuid.generate(null);
var cart = new Cart(cartId);
var item = cart.addItem('6585a9c31be0e1107d0354e0604bcb2b'); //Catalog Request Item
cart.setVariable(item, 'requested_for', gs.getUserID());
cart.setVariable(item, 'is_operations', email.body_text);
cart.setVariable(item, 'short_description', email.subject);
cart.setVariable(item, 'email', email.origemail);

 

var rc = cart.placeOrder();
gs.addInfoMessage(rc.number); // this is the request number not the RITM #
var grRITM = new GlideRecord('sc_req_item');
grRITM.addQuery('request',rc.getValue('sys_id'));
grRITM.query();
if(grRITM.next()) {
grRITM.setDisplayValue('assignment_group', '');
grRITM.update();

 

/*********** Update Request *************/
current.setDisplayValue(short_description, "Test text 1");
current.setDisplayValue(description, "Test text 2");
current.update();
}
})(current, event, email, logger, classifier);

 

Where would I place this function to get my emails to attach correctly? Would the placement be different if I want attachments to also go to the RITM and Task tickets?

 

Thank you for any help!

2 REPLIES 2

BharathChintala
Mega Sage

@Lee Kraus2  after request is created write this line

// Copy attachments to the target record
GlideSysAttachment.copy("sys_email", sys_email.getUniqueValue(), target.getTableName(), target.getUniqueValue());
If my inputs have helped with your question, please mark my answer as accepted solution, and give a thumb up.
Bharath Chintala

So here's where I put the code, but it didn't work. Where should I place this line?

 

(function runAction(/*GlideRecord*/ current, /*GlideRecord*/ event, /*EmailWrapper*/ email, /*ScopedEmailLogger*/ logger, /*EmailClassifier*/ classifier) 
{

/*********** Update RITM *************/
var cartId = GlideGuid.generate(null);
var cart = new Cart(cartId);
var item = cart.addItem('6585a9c31be0e1107d0354e0604bcb2b'); //IS Ops ticket Catalog Request Item
cart.setVariable(item, 'requested_for', gs.getUserID());
cart.setVariable(item, 'is_operations', email.body_text);
cart.setVariable(item, 'short_description', email.subject);
cart.setVariable(item, 'email', email.origemail);
//cart.setVariable(item, 'business_service', '');
//cart.setVariable(item, 'requester_priority', '2');
//cart.setVariable(item, 'requester_priority', '1');

var rc = cart.placeOrder();
gs.addInfoMessage(rc.number); // this is the request number not the RITM #
var grRITM = new GlideRecord('sc_req_item');
grRITM.addQuery('request',rc.getValue('sys_id'));
grRITM.query();
if(grRITM.next()) {
grRITM.setDisplayValue('assignment_group', '');
grRITM.update();

// Copy attachments to the target record
GlideSysAttachment.copy("sys_email", sys_email.getUniqueValue(), target.getTableName(), target.getUniqueValue());

/*********** Update Request *************/
current.setDisplayValue(short_description, "Test text 1");
current.setDisplayValue(description, "Test text 2");
current.update();
}
})(current, event, email, logger, classifier);