javascript - Script for missing Time card in Service Now -


i need send notification every monday users located in particular location along supervisor if have missed filling time cards, or time card state pending.

i have tested below script in background -script section , users don't have entry in time_card table week, simple find out. users have more 1 entry in pending state, more 1 notification go out them. need way group state 1 notification sent user per week time card still pending.

var qry = 'active=true^location=7e294345ed9cf8c0b8536034d0f12dc7'; var tqry = 'week_starts_onrelativeee@dayofweek@ago@4'; var puneusr = new gliderecord('sys_user'); puneusr.addencodedquery(qry); puneusr.query(); gs.print("pune users: count" + puneusr.getrowcount());  while(puneusr.next()){     var timecard = new gliderecord('time_card');     timecard.addquery('user', puneusr.sys_id);     timecard.addencodedquery(tqry);    timecard.query();    if (timecard.getrowcount() == '0'){    gs.print("row count" + timecard.getrowcount() + "user" + puneusr.sys_id.getdisplayvalue());    }    if (timecard.getrowcount() != '0'){        while (timecard.next()){        gs.print("row count" + timecard.getrowcount() + "state" + timecard.getvalue('state') + "user" + puneusr.sys_id.getdisplayvalue() + "</br>" );        }    }    } 

i add event registry in place of print statements , attach notifications them. of there 2 statements printed 2nd gs.print if user has 2 records in pending time card.

not sure how limit 1 event created per user.

if understand requirement correctly, you're looking generate 1 event (or in case of test script there, 1 gs.print()) per user.

here code generate 1 event (gs.print() in case) per user, include of details each of time cards (once edit line 23):

//declare msg var msg = ''; var qry = 'active=true^location=7e294345ed9cf8c0b8536034d0f12dc7'; var tqry = 'week_starts_onrelativeee@dayofweek@ago@4'; var puneusr = new gliderecord('sys_user'); puneusr.addencodedquery(qry); puneusr.query(); gs.print("pune users: count" + puneusr.getrowcount());  while(puneusr.next()){     var timecard = new gliderecord('time_card');     timecard.addquery('user', puneusr.sys_id);     timecard.addencodedquery(tqry);     timecard.query();     if (timecard.getrowcount() == '0'){         gs.print("row count" + timecard.getrowcount() + "user" + puneusr.sys_id.getdisplayvalue());     }     if (timecard.getrowcount() != '0'){         //add header line once each user         msg += 'you have ' + timecard.getrowcount() + 'timecard(s) pending:<br />'         while (timecard.next()){             //add line msg each timecard matches query             msg += 'put in details timecard here, , maybe link it.<br />');         }         //print out final result of msg user.          gs.print(msg);     } } 

i added comment above every line added/modified can see code mine.

here version should spit out 1 message per user, no matter how many timecards have open:

var qry = 'active=true^location=7e294345ed9cf8c0b8536034d0f12dc7'; var tqry = 'week_starts_onrelativeee@dayofweek@ago@4'; var puneusr = new gliderecord('sys_user'); puneusr.addencodedquery(qry); puneusr.query(); gs.print("pune users: count" + puneusr.getrowcount());  while(puneusr.next()){     var timecard = new gliderecord('time_card');     timecard.addquery('user', puneusr.sys_id);     timecard.addencodedquery(tqry);     timecard.query();     if (timecard.getrowcount() == '0'){         gs.print("row count" + timecard.getrowcount() + "user" + puneusr.sys_id.getdisplayvalue());     }     if (timecard.getrowcount() != '0'){         //change 'while' 'if' executes once, regardless of how many records returned.         if (timecard.next()){             gs.print("row count" + timecard.getrowcount() + "state" + timecard.getvalue('state') + "user" + puneusr.sys_id.getdisplayvalue() + "</br>" );         }     } } 

Comments

Popular posts from this blog

sql - VB.NET Operand type clash: date is incompatible with int error -

SVG stroke-linecap doesn't work for circles in Firefox? -

python - TypeError: Scalar value for argument 'color' is not numeric in openCV -