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.

Get Attachments through REST API

Aruna Sree Yela
Tera Guru

Hi,

 

3rd party tool is calling servicenow to get attachments of RITM in binary stream.

 

I want to achieve this using script include and Scripted REST API. How to achieve this

 

Thanks

1 ACCEPTED SOLUTION

@Aruna Sree Yela 

I am able to get the base64 data using background script in global scope

You can check the script and enhance

I believe if the base64 string is huge then it might not work while setting the response of scripted rest api

var attGr = new GlideRecord('sys_attachment');
  attGr.addQuery('sys_id', 'b45f80356f102100758ecb512e3ee485');
  attGr.query();
  if(attGr.next())
        {
   var gsu = (typeof GlideStringUtil != 'undefined') ? (GlideStringUtil) : (Packages.com.glide.util.StringUtil); //few versions support the first one, other supports second
   var gsa = (typeof GlideSysAttachment != 'undefined') ? (new GlideSysAttachment()) : (new Packages.com.glide.ui.SysAttachment());
   var attachmentData = gsa.getBytes(attGr);
   var attachment = String(Packages.java.lang.String(attachmentData));
   gs.info(attachment); //the data in the file will be printed as String
   var encData = GlideStringUtil.base64Encode(attachmentData); // data of one attachment at a time
   gs.info(encData);
}

Output:

AnkurBawiskar_0-1739272573205.png

 

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

20 REPLIES 20