****I want to download selected files from incident instead of all could you please help with the script***

G Phani Krishna
Kilo Contributor

****I want to download selected files from incident instead of all could you please help with the script***

1 ACCEPTED SOLUTION

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

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

View solution in original post

62 REPLIES 62

Ian Mildon
Tera Guru

What condition(s) are you wanting to use to identify the records you want to download? Also, what format do you want the records in?

Thanks for the rply.

 

In incident record i have 10 attachments,So i want to download 5 records from the incident.But if i select 5 records from the incident and post hitting the download it's downloading the all the files.

My requirement i want to download 5 files from the incident out of 10 incidents.

 

Could you please help me with script to create separate UI action to achieve this requirement

It should not be downloading all; not if you have filtered on just the five you want. do you have all 10 showing on the screen when you hit export?

Also, unless you export as XML you'll essentially lose the attachments on the downloaded files. Using XML will maintain all the details of the records, including attachments so you can re-import to the same instance or another instance and still retain the attachments.

you want to download only some of the ATTACHMENTS on an incident, is that correct?

please be clear in your requirement so that you get a reply that answers your question