Skip to main content

Run a test load data from script calling processor

this is a modified version of the 'test load 20 records' ui action
create this as a copy
in the condition, add a condition to restrict it to the data source in question
in this example a file import

instead of having to redirect to the sys_import.do java processor, this can be done in script as follows:
(instance calls itself via httprequest to access the processor, this can enable users without permissions but who can see the UI action to perform a test load on the data source with the file attached)
-------------


current.update();
 //--below is OOTB code, commented out but principles reused
/*var redirectStr = "sys_import.do?"; // the URI
redirectStr += "import_source=data_source"; // this is a Data Source import
redirectStr += "&sysparm_data_source=" + current.sys_id; // the sys_id of this
redirectStr += "&sysparm_tablename=" + current.import_set_table_name; // always create the same test
redirectStr += "&sysparm_recreate_table=false"; // we dont want to overwrite existing
redirectStr += "&sysparm_tablelabel=" + current.name;
redirectStr += "&create_new_module=ON";
redirectStr += "&sysparm_extends=sys_import_set_row"; // always extends this
redirectStr += "&selected_application=import_sets";
redirectStr += "&sysparm_default_state=test";
redirectStr += "&max_rows=2"; // change this number if you want more test rows*/

try{
           
            var url='https://<your_instance>.service-now.com/'+'sys_import.do';
//--credentials must correspond to a user with the correct permissions e.g. rest_service, within SN
            var request=new GlideHTTPRequest(url);
            request.setBasicAuth("servicenowuser", "servicenowpwd");
            request.addHeader('Accept', 'application/json');
            request.addParameter('import_source', 'data_source');
            request.addParameter('sysparm_data_source', current.sys_id);
            request.addParameter('sysparm_tablename', current.import_set_table_name);
            request.addParameter('sysparm_recreate_table', 'false');
            request.addParameter('create_new_module', 'ON');
            request.addParameter('sysparm_extends', 'sys_import_set_row');
            request.addParameter('selected_application', 'import_sets');
            request.addParameter('sysparm_default_state', 'test');
            request.addParameter('max_rows', '2');
            var response=request.get();
            gs.log('TESTRESP:' + response.getStatusCode(), 'processorresp');
           
          
           
           
}catch (ex){
            gs.addInfoMessage('error');
            gs.log(ex.toString(), 'processorErr');

var info = "Test loading 2 rows - ";

info += "<a style='text-decoration:underline;color:blue' href=sys_data_source.do?sys_id=" + current.sys_id + ">Return to data source</a><img width='3' src='images/s.gif'/>";

gs.addInfoMessage(info + '---TEST');
action.setRedirectURL(current);

Comments

Popular posts from this blog

ServiceNow check for null or nil or empty (or not)

Haven't tested these all recently within global/local scopes, so feel free to have a play! option 1 use an encoded query embedded in the GlideRecord , e.g.  var grProf = new GlideRecord ( 'x_cls_clear_skye_i_profile' ); grProf . addQuery ( 'status=1^ owner=NULL ' ); grProf . query (); even better use the glideRecord  addNotNullQuery or addNullQuery option 2 JSUtil.nil / notNil (this might be the most powerful. See this link ) example: if ( current . operation () == 'insert' && JSUtil . notNil ( current . parent ) && ! current . work_effort . nil ())  option 3 there might be times when you need to get inside the GlideRecord and perform the check there, for example if the code goes down 2 optional routes depending on null / not null can use gs.nil : var grAppr = new GlideRecord ( 'sysapproval_approver' ); var grUser = new GlideRecord ( 'sys_user' ); if ( grUser . get ( 'sys_id' , current . approver )){...

Code a pause/wait - gs.sleep or gs.wait alternative, pause script for specified seconds (timer)

Code a pause/wait - gs.sleep / gs.wait alternative, pause script for specified seconds (timer)  e.g. 10 seconds: do_sleep ( 10000 ); function do_sleep ( milliseconds ) { var start = new Date (). getTime (); for ( var i = 0 ; i < 1e7 ; i ++) { if (( new Date (). getTime () - start ) > milliseconds ){ gs . print ( 'waking up!' ); break ; } } }