Skip to main content

IMPROVED Sys Admin useful Service Portal widget to check for duplicates in tables

> improved from an earlier post...

(see https://getbootstrap.com/docs/3.4 )

Widget defined in global scope; note can set cross scope privileges for access to scoped tables
[- should generate entries in sys_restricted_caller_access which can then be set to permitted]

HTML:

<div> <h1>Check ServiceNow Table for duplicates <title>Check ServiceNow Table for duplicates</title> </h1> <div class='container'> <form class="form-horizontal"> <div class="form-group"> <label class="col-sm-2 control-label">Enter table name here</label> <div class="col-sm-10"> <input class="form-control" value ='sys_user' id='tbl_name'> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label">Enter field name here</label> <div class="col-sm-10"> <input class="form-control" value='email' id='dupl_field'> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label">Custom query string</label> <div class="col-sm-10"> <input class="form-control" value='active=true' id='custom_query'> </div> </div> <div class="form-group"> <button ng-click="runtheoperation()" class="btn btn-info">Click to check dupl</button> </div> </form> <h2>Results:</h2> <div class="well"> <textarea id='results_q' rows="10" style="width:100%;">{{c.duplrecordsList}}</textarea> </div> <h2>Total duplicates rows: {{c.duplrecordsSize}}</h2> </div> </div>

CSS:

.control-label { text-align: left; }

  


CLIENT:

function($scope) { /* widget controller */ var c = this; c.duplrecordsSize=0; c.duplrecordsList=''; $scope.runtheoperation = function() { //console.log("message", 'run the op'); c.server.get({ action: "get_dupls", msg : "Running glideaggregate to check for duplicates...", sn_table : angular.element($('#tbl_name')).val(), duplfield : angular.element($('#dupl_field')).val(), customQuery : angular.element($('#custom_query')).val() }).then(function(r){ c.duplrecordsSize=r.data.duplrecordsSize-1; var duplData=r.data.duplrecordsList; c.duplrecordsList=duplData.join('\n'); }); }; }






















SERVER:

(function() { /* populate the 'data' object */ /* e.g., data.table = $sp.getValue('table'); */ data.duplrecordsList=[]; data.duplrecordsSize=0; if (input && input.action === "get_dupls"){ data.duplrecordsList=(checkDuplUsers(input.customQuery, input.duplfield,input.sn_table)); data.duplrecordsSize=data.duplrecordsList.length; } function checkDuplUsers(customQuery, fieldParam, table){ var ga= new GlideAggregate(table); ga.addAggregate('COUNT', fieldParam); if (customQuery){ ga.addQuery(customQuery); } ga.addHaving('COUNT', '>', 1); ga.query(); var dupls=[]; dupls.push("The following " + ga.getRowCount() + " records are duplicate on " + fieldParam); while (ga.next()) { var DuplLine=ga.getAggregate('COUNT', fieldParam) + " => " + ga.getElement(fieldParam); dupls.push(DuplLine); } //gs.log(dupls,'duplWidget_arr'); return dupls; } })();

Comments

Popular posts from this blog

Get URL Parameter - server side script (portal or classic UI)

Classic UI : var sURL_editparam = gs . action . getGlideURI (). getMap (). get ( ' sysparm_aparameter ' ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); } Portal : var sURL_editparam = $sp . getParameter ( " sysparm_aparameter " ); if ( sURL_editparam == 'true' ) { gs . addInfoMessage ( 'parameter passed ); }

ServiceNow - script include: build up the results as a JSON object (array) - example 2

function call var sCurrentGroupMembers = new <script_include> (). getGroupMembers ( group_sysid ); gs . print ( 'sCurrentGroupMembers:' + sCurrentGroupMembers ); var oGroupMembers = JSON . parse ( sCurrentGroupMembers ); gs . print ( JSON . stringify ( oGroupMembers . users )); oNewGroupMember = JSON . parse ( group_members ); var oGroupConfig = getGroupDeltas ( oGroupMembers . users , oNewGroupMember ); gs . print ( JSON . stringify ( oGroupConfig . remove )); gs . print ( JSON . stringify ( oGroupConfig . add )) output : *** Script: sCurrentGroupMembers: {"manager":"3b2649efdb0f8c10cc0652f3f39xxxxx", "email":"", "type":"33a2226edb99c340edfc7cbdae96xxxx", "description":"Created for xyz", "users":[{"user":"3b2649efdb0f8c10cc0652f3f396xxxx"},{"user":"856a8f71db3d73041b4ffc45ae96196a"},{"user":"3752771