Excel and word documents Attachments Not able to open Through Rest message?

siva44
Tera Contributor

I have created rest message and scripted rest api for attachments moving one instance to another instance on catlog task table but only excel and word documents files not able to open in the second instance.
business rules for instance1:

(function executeRule(current, previous /*null when async*/) {
  var target= new GlideRecord('sc_task');
target.addQuery('sys_id',current.table_sys_id);
target.addActiveQuery();
target.setLimit(1);
target.query();
if(target.next()){
    var incNumber=target.number;
    var scNumber=target.u_vendor_reference_number;
    //gs.info('Base 64 SCC Number' + scNumber);
    //gs.info('Base 64 TCS Number' + incNumber);
    var sa= new GlideSysAttachment();
    var binData=sa.getBytes(current);
    var base64Data=GlideStringUtil.base64Encode(binData);
    gs.info('Base 64 encoded query'+ base64Data);
    //target.update();
}

try {
 var r = new sn_ws.RESTMessageV2('catlog_outbound - attachment', 'Attachment');
 r.setStringParameterNoEscape('cs_number', incNumber);
 r.setStringParameterNoEscape('sc_number', scNumber);
 r.setStringParameterNoEscape('attachment_content_type', current.content_type);
 r.setStringParameterNoEscape('comments', '');
 
 r.setStringParameterNoEscape('work_notes', '');

 
 r.setStringParameterNoEscape('attachment_content', base64Data);

 r.setStringParameterNoEscape('attachment_name', current.file_name);
 var response = r.execute();
 var responseBody = response.getBody();
 var httpStatus = response.getStatusCode();
// gs.info('Base 64 successfully sent'+ base64Data);
}
catch(ex) {
 var message = ex.message;
}
gs.info('base 64 Response Code' + httpStatus);
})(current, previous);

scripted rest api for instance 2:

(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {

    var requestBody = request.body.dataString;
    var parser = new global.JSON();
    var parsedData = parser.decode(requestBody);
    var number = parsedData.sc_number;
    var fileName = parsedData.attachment_name;
    var fileContentType = parsedData.attachment_content_type;
    var fileData = parsedData.attachment_content;
    var base64Bytes = GlideStringUtil.base64Decode(fileData);

    var rec = new GlideRecord('sc_task');
    rec.addQuery('number',number);
    rec.query();
    if(rec.next()){
        var sa = new GlideSysAttachment();
        sa.write(rec, fileName, fileContentType, base64Bytes);
        var responseBody = {};
        responseBody.incNumber = number;
        responseBody.status = "Success";
        response.setBody(responseBody);
    }
    else{
        var responseBodyFailure = {};
        responseBodyFailure.status = "Failure";
        response.setBody(responseBodyFailure);
    }

})(request, response);
3 REPLIES 3

Ankur Bawiskar
Tera Patron
Tera Patron

@siva44 

is it working fine for pdf, ppt files?

why not use GlideSysAttachment in scripted REST API to create the file?

check this link on how to use that where I shared solution few years ago

Scripted Rest API to update incident with attachment 

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

it is working fine for pdf and text files 

@siva44 

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