- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-09-2022 01:53 AM
I want to send attachment from ServiceNow to Jira. For that I have created REST message and BR. I don't know what is wrong with my BR. I am not able to send attachment
(function executeRule(current, previous /*null when async*/ ) {
var included_tables = ["incident"];
var debug = true;
var arrayUtil = new ArrayUtil();
var requestBody;
var responseBody;
var status;
var sm;
if (typeof GlideStringUtil != 'undefined')
var StringUtil = GlideStringUtil;
else
var StringUtil = Packages.com.glide.util.StringUtil;
gs.log("initialize");
var gr = new GlideRecord(current.table_name);
gr.addQuery('sys_id', current.table_sys_id);
gr.query();
if (gr.next()) {
if (arrayUtil.contains(included_tables,current.table_name)) {
try{
sm = new sn_ws.RESTMessageV2('Neste Siili JIRA', 'Add attachment');
var attachmentsJson = '';
attachmentsJson += ' { "content_type":"' + current.content_type + '",';
attachmentsJson += '"file_name":"' + JSUtil.escapeText(current.file_name) + '",';
attachmentsJson += '"size_bytes":"' + current.size_bytes + '",';
attachmentsJson += '"sys_id":"' + current.sys_id + '"';
attachmentsJson += '}';
sm.setStringParameterNoEscape('attachments', attachmentsJson);
response = sm.execute();
status = response.getStatusCode();
if (debug){
gs.log("Payload sent jira: " + sm.getRequestBody());
gs.log("Response jira: " + response.getBody());
gs.log("Status jira : " + status);
}
} catch(ex) {
responseBody = ex.getMessage();
status = '500';
} finally {
requestBody = sm ? sm.getRequestBody():null;
}
}
}
})(current, previous);
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-21-2022 10:43 PM
Hi,
I am sharing a sample code and you can enhance it further
based on BR is on which table sys_attachment or incident enhance the code
var arr = [];
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 gr = new GlideRecord("sys_attachment");
gr.addQuery("table_sys_id", incidentSysId);
gr.query();
while (gr.next()) {
var attachmentData = gsa.getBytes(gr);
var attachment = String(Packages.java.lang.String(attachmentData));
var encData = GlideStringUtil.base64Encode(attachmentData);
var obj = {};
obj["content_type"] = gr.getValue('content_type');
obj["file_name"] = JSUtil.escapeText(gr.getValue('file_name'));
obj["size_bytes"] = gr.getValue("size_bytes ");
obj["sys_id"] = gr.getUniqueValue();
obj["Content-Transfer-Encoding"] = "base64" + encData.toString();
arr.push(obj);
}
var finalObj = {};
finalObj["attachment"] = arr;
var sm = new sn_ws.RESTMessageV2('Neste Siili JIRA', 'Add attachment');
var response = sm.execute();
var status = response.getStatusCode();
gs.info("Payload sent jira: " + sm.getRequestBody());
gs.info("Response jira: " + response.getBody());
gs.info("Status jira : " + status);
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-22-2022 12:13 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-22-2022 12:18 AM
Hi,
your business rule is on which table?
share your latest script?
are you sure the BR triggered?
regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-22-2022 01:59 AM
Business rule is on sys_attachment table. The script is
(function executeRule(current, previous /*null when async*/ ) {
var arr = [];
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 gr = new GlideRecord("sys_attachment");
gr.addQuery('sys_id', current.table_sys_id);
gr.query();
while (gr.next()) {
var attachmentData = gsa.getBytes(gr);
var attachment = String(Packages.java.lang.String(attachmentData));
var encData = GlideStringUtil.base64Encode(attachmentData);
var obj = {};
obj["content_type"] = gr.getValue('content_type');
obj["file_name"] = JSUtil.escapeText(gr.getValue('file_name'));
obj["size_bytes"] = gr.getValue("size_bytes ");
obj["sys_id"] = gr.getUniqueValue();
obj["Content-Transfer-Encoding"] = "base64" + encData.toString();
arr.push(obj);
}
var finalObj = {};
finalObj["attachment"] = arr;
var sm = new sn_ws.RESTMessageV2('Neste Siili JIRA', 'Add attachment');
var response = sm.execute();
var status = response.getStatusCode();
gs.info("Payload sent jira: " + sm.getRequestBody());
gs.info("Response jira: " + response.getBody());
gs.info("Status jira : " + status);
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-22-2022 07:40 AM
Hi,
not sure why your BR is on sys_attachment
but here is your updated script
(function executeRule(current, previous /*null when async*/ ) {
var arr = [];
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 gr = new GlideRecord("sys_attachment");
gr.addQuery('table_sys_id', current.table_sys_id);
gr.query();
while (gr.next()) {
var attachmentData = gsa.getBytes(gr);
var attachment = String(Packages.java.lang.String(attachmentData));
var encData = GlideStringUtil.base64Encode(attachmentData);
var obj = {};
obj["content_type"] = gr.getValue('content_type');
obj["file_name"] = JSUtil.escapeText(gr.getValue('file_name'));
obj["size_bytes"] = gr.getValue("size_bytes ");
obj["sys_id"] = gr.getUniqueValue();
obj["Content-Transfer-Encoding"] = "base64" + encData.toString();
arr.push(obj);
}
var finalObj = {};
finalObj["attachment"] = arr;
var sm = new sn_ws.RESTMessageV2('Neste Siili JIRA', 'Add attachment');
var response = sm.execute();
var status = response.getStatusCode();
gs.info("Payload sent jira: " + sm.getRequestBody());
gs.info("Response jira: " + response.getBody());
gs.info("Status jira : " + status);
})(current, previous);
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-22-2022 11:26 PM
Hi Ankur,
It is still not working