- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
on 11-18-2021 03:20 AM
Problem Statement: If any user download any data from the list view of any table it was very tough to track them.
Scope: Global Application
Risk: We have to edit OOB Export UI context Menu so during upgradation it may impact.
Solution Step:
1- Create once client callable script Include with below function-
Name: nercCatalogUtils
Client callable: True
var nercCatalogUtils = Class.create();
nercCatalogUtils.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
addToLog: function() {
/*
@param1:Export Type -(eg- JSON,PDF,XlX,XLXS,XML)
@param2:Export From -(Always Pass "List View")
@param3: EncodedQuery -(encoded query used by user)
@param3: Table Name
@return: Void
*/
var exportType = this.getParameter('sysparm_exportType');
var exportFrom = this.getParameter('sysparm_exportFrom');
var exportQuery = this.getParameter('sysparm_exportQuery');
var tableName = this.getParameter('sysparm_tableName');
var message = 'Record has been Exported\nExported From TableName: ' + tableName + '\nExported Type: ' + exportType + '\nExported From(view): ' + exportFrom + '\nExported record Query: ' + exportQuery;
var log = new GlideRecord('syslog');
log.initialize();
log.message = message;
log.level = 0;
log.insert();
},
type: 'nercCatalogUtils'
});
2- Search for UI Context Menu in the filter navigator and open the list view -
3- Search for export and open the record OR click the below url to open the record with your domain name;
https://{DOMAIN NAME}.service-now.com/nav_to.do?uri=%2Fsys_ui_context_menu.do%3Fsys_id%3Dd1ad2f010a0a0b3e005c8b7fbd7c4e28%26sysparm_record_target%3Dsys_ui_context_menu%26sysparm_record_row%3D2%26sysparm_record_rows%3D2%26sysparm_record_list%3DnameSTARTSWITHexport%255EORDERBYorder
4- From the related list context menu click on XML and open the record.
5- In the Action script just add below script. Don't remove the existing code just add these lines below the exiting code.
var addLog = new GlideAjax('nercCatalogUtils');
addLog.addParam('sysparm_name', 'addToLog');
addLog.addParam('sysparm_tableName', g_list.tableName);
addLog.addParam('sysparm_exportQuery', g_list.getQuery());
addLog.addParam('sysparm_exportType', 'XML');
addLog.addParam('sysparm_exportFrom', 'List View');
addLog.getXML(addTheLog);
function addTheLog(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
//alert('Log has been added');
}
6- You can call the script include from PDF,JSON etc and just hard code the exportType value with the respective button Name.
7- Save it. and export one record. and open the Log table to see the result.
Output:
Please mark it helpful if really helps you.
- 628 Views