How to copy attachment from sys_email to case record

mania
Tera Contributor

Hi,

 

I am trying the copy attachment from sys_email to case record so i havee used below code but not getting mapped.

Can anyone please let us know where i missed?

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

    // Add your code here
    var inc = new GlideRecord("sys_email");
    if (inc.get(current.table_sys_id)) {
        var grTask = new GlideRecord("sn_customerservice_case");
        if (grTask.get(inc.instance)) {
            copyAttachmentToTask(grTask.sys_id);
        }
    }


    function copyAttachmentToTask(conceptSysId) {
        // Get record from sys_attachment table
        var sourceAttachment = new GlideRecord('sys_attachment');
        sourceAttachment.addQuery("sys_id", current.sys_id);
        sourceAttachment.query();
        sourceAttachment.next();

        // Get field values from retrieved sys_attachment record
        var fileName = sourceAttachment.getValue('file_name');
        var contentType = sourceAttachment.getValue('content_type');
        var sourceAttachmentSysId = sourceAttachment.getValue('sys_id');

        // Attach sys_attachment record content stream to test_table record
        var gsa = new GlideSysAttachment();
        gsa.writeContentStream(
            grTask,
            fileName,
            contentType,
            gsa.getContentStream(sourceAttachmentSysId));
    }

})(current, previous);

Thanks!

2 ACCEPTED SOLUTIONS

Ankur Bawiskar
Tera Patron

@mania 

Is the email coming of type Reply and it has attachment and you want to add that file to target record?

If yes then do this in inbound action of type Reply

GlideSysAttachment.copy('sys_email', sys_email.sys_id, 'sn_customerservice_case', current.sys_id);

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

View solution in original post

@mania 

Glad to know.

Please mark my below response as correct and close the thread.

AnkurBawiskar_0-1753758832029.png

 

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

View solution in original post

12 REPLIES 12

@mania 

Glad to know.

Please mark my below response as correct and close the thread.

AnkurBawiskar_0-1753758832029.png

 

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

@Ankur Bawiskar 

But i have forward inbound action that will work when we forward with any existing Case number it will map the body to worknotes else if not matching the case number it will create new record and it will map the body to worknotes so here i want to create a another function for copy attachments from sys_email to case ticket.

If i used this below line of code. It is getting duplications:

GlideSysAttachment.copy('sys_email', sys_email.sys_id, 'sn_customerservice_case', current.sys_id);

For ex: If i add "A" image from email it should get to case form CS0001 and again if i add the same "A" image from email with the same record CS0001 it should not update.

Can you please help on this.

Thanks!

@mania 

then check if the file is already there then don't copy

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 

I have debugged and resolved it

Thanks!

@mania 

Hope you are doing good.

Did my reply answer your question?

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