Save User Preferences in a table
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-15-2022 05:49 AM
There is a function called getUserPreferences(),
I have to do the set, saving that data in the 'sys_user_preferences' table how can I do?
(function() {
/* populate the 'data' object */
/* e.g., data.table = $sp.getValue('table'); */
try{
var userId = gs.getUserID();
data.arr = [];
data.report = '';
data.prefReport = '';
data.rowName = '';
data.columnName = '';
data.show_report_widget = false;
data.mainReportPreference = 'custom_report.main';
//define event in get
data.EVENTS= {
getReport:"getReport",
getReportData: "getReportData",
getUserPreferences: "getUserPreferences",
init: "init"
};
//Delegate action for event
var ACTIONS= [
{
event:data.EVENTS.getReport,
delegate: getReport
},
{
event:data.EVENTS.getReportData,
delegate: getReportData
},
{
event:data.EVENTS.getUserPreferences,
delegate: getUserPreferences
},
{
event:data.EVENTS.init,
delegate: init
}
];
if(input){
var execute= ACTIONS.filter(function(action){
return input.action==action.event;
});
if(execute.length)
execute[0].delegate(input);
}
else{
//initial
init();
}
} catch(err){
$sp.log("Error :" + JSON.stringify(err));
data.error = {
err : err
}
}
//functions
function init(){
data.report = $sp.getParameter('report');
}
function getReport(input){
try{
var reportGR = new GlideRecordSecure('sys_report');
reportGR.addQuery('sys_id', data.report);
reportGR.query();
if(reportGR.hasNext()){
$sp.log('reportGR: ' + reportGR.title);
}
var request = new sn_ws.RESTMessageV2();
request.setEndpoint('/api/now/table/sys_report?sysparm_query=sys_id%3D' + input.report_sys_id);
request.setHttpMethod('GET');
request.setRequestHeader('Accept','application/json');
request.setRequestHeader('Content-Type','application/json');
request.setRequestHeader('X-UserToken', input.g_ck);
//request.setRequestHeader('X-UserToken', token);
var response = request.execute();
$sp.log('report: ' + response.getBody());
data.reportResponse = response;
}
catch(e){
$sp.log("error in getReport: " + e);
}
}
function getReportData(input){
try{
var myObj = new GlideRecord(input.table);
myObj.addEncodedQuery(input.encodedQuery);
myObj.query();
while(myObj.next()){
var ctrObj = {};
data.rowName = myObj[input.row].getLabel();
data.columnName = myObj[input.column].getLabel();
ctrObj[data.rowName] = myObj.getDisplayValue(input.row);
ctrObj[data.columnName] = myObj.getDisplayValue(input.column);
ctrObj.sys_id = myObj.getValue('sys_id');
ctrObj[input.aggfield] = myObj.getValue(input.aggfield);
data.arr.push(ctrObj);
}
}
catch(e){
$sp.log("error in getReportData: " + e);
}
}
function getUserPreferences(){
try{
var encodedQuery = 'user=' + userId + '^name=' + data.mainReportPreference;
var myObj = new GlideRecord('sys_user_preference');
myObj.addEncodedQuery(encodedQuery);
myObj.query();
if(myObj.hasNext()){
$sp.log("UserPreferences: " + JSON.stringify(myObj.getDisplayValue('name')));
var prefReport = myObj.value;
if(prefReport.length){
data.prefReport = prefReport;
}
}
}
catch(e){
$sp.log("error in getUserPreferences: " + e);
}
}
function resolve(obj,path) {
return path.split('.').reduce(function(prev, curr) {
return prev ? prev[curr] : null
}, obj || self)
}
})();
3 REPLIES 3

Community Alums
Not applicable
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-15-2022 05:56 AM
Hi,
Can you try and use "savePreference":
var currentUser = gs.getUser();
currentUser.savePreference('user_preference_name', 'user_preference_value');
Mark my answer correct & Helpful, if Applicable.
Thanks,
Sandeep
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-15-2022 06:23 AM
thank you Sandeep,
inside the function or outside the getUserPreferences () function?

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-15-2022 11:37 PM
outside.