- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-19-2019 04:31 AM
****I want to download selected files from incident instead of all could you please help with the script***
Solved! Go to Solution.
- Labels:
-
Incident Management
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-25-2019 07:44 AM
Hi Krishna,
So here is the updated UI page code which shows checkbox besides every file; you need to click the checkbox for which file to be downloaded
then click on the download attachments and it will download
UI Page Code:
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<style>
table {
font-family: arial, sans-serif;
border-collapse: collapse;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
</style>
<g:evaluate jelly="true" object="true" var="jvar_jsonObj">
var recordSysId = RP.getWindowProperties().get('sysparm_sysID');
var arr = [];
var gr = new GlideRecord('sys_attachment');
gr.addQuery('table_sys_id', recordSysId);
gr.query();
while(gr.next()){
var jsonObj = {};
jsonObj.name = gr.getValue('file_name');
jsonObj.path = '/sys_attachment.do?sys_id=' + gr.getValue('sys_id');
arr.push(jsonObj);
}
arr;
</g:evaluate>
<j:choose>
<j:when test="${arr.length > 0}">
<table cellspacing="0" cellpadding="0" width="100%">
<th>File Name</th>
<th>Download Yes/No</th>
<j:forEach items="${jvar_jsonObj}" var="jvar_json">
<tr><td>${jvar_json.name}</td><td><input class="checkbox" type="checkbox" name="type" id="${jvar_json.path}"></input></td></tr>
<!-- <a href="${jvar_json.path}">Click here to download this file</a> -->
</j:forEach>
</table>
<button type="submit" value="download_attachments" onclick="downloadFiles()">Download Specific Attachments</button>
</j:when>
<j:otherwise>
<p>No attachments to display</p>
</j:otherwise>
</j:choose>
</j:jelly>
Client Script Code:
function downloadFiles(){
var selected = [];
$j("input:checkbox[name=type]:checked").each(function() {
selected.push($j(this).attr('id'));
});
for(var i=0;i<selected.length;i++){
var url = selected[i];
window.open(url);
}
}
Mark ✅ Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
Thanks
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
09-25-2019 11:10 PM
Thanks ankur,
I have tried in Microsoft edge,Chrome and firefox and it's not working.
When we try to download selected files post clicking the downloading option nothing happens.Please help me to fix this issue.
Waiting for response
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-25-2019 11:22 PM
Hi Krishna,
The above worked for me in firefox browser
Is the url getting formed correctly?
Can you share your UI page code?
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
09-25-2019 11:33 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-25-2019 11:34 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-25-2019 11:37 PM
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<style>
table {
font-family: arial, sans-serif;
border-collapse: collapse;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
</style>
<g:evaluate jelly="true" object="true" var="jvar_jsonObj">
var recordSysId = RP.getWindowProperties().get('sysparm_sysID');
var arr = [];
var gr = new GlideRecord('sys_attachment');
gr.addQuery('table_sys_id', recordSysId);
gr.query();
while(gr.next()){
var jsonObj = {};
jsonObj.name = gr.getValue('file_name');
jsonObj.path = '/sys_attachment.do?sys_id=' + gr.getValue('sys_id');
arr.push(jsonObj);
}
arr;
</g:evaluate>
<j:choose>
<j:when test="${arr.length > 0}">
<table cellspacing="0" cellpadding="0" width="100%">
<th>File Name</th>
<th>Download Yes/No</th>
<j:forEach items="${jvar_jsonObj}" var="jvar_json">
<tr><td>${jvar_json.name}</td><td><input class="checkbox" type="checkbox" name="type" id="${jvar_json.path}"></input></td></tr>
<!-- <a href="${jvar_json.path}">Click here to download this file</a> -->
</j:forEach>
</table>
<button type="submit" value="download_attachments" onclick="downloadFiles()">Download Specific Attachments</button>
</j:when>
<j:otherwise>
<p>No attachments to display</p>
</j:otherwise>
</j:choose>
</j:jelly>