- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-12-2023 07:47 AM
Hi Team,
I am using the below script for removing inactive users who is updated on last week from knowledge base table.
It is working without using function. But our requirement is to use the Knowledgebase function for removal of inactive users from kb table separately by calling the same inActiveUsers array inside the function. I tried the below script with function but it's not working. Could you please help me. Thank you!!
Note: We have to remove the inactive users from other tables(Assignment Data Lookups,Report,Scheduled Email of Report,Notification) also by mentioning different function for each table.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-12-2023 07:51 AM - edited ‎09-12-2023 07:55 AM
Hi Amrutha,
I don't see where you call the function in the script.
add "knowledgebase(inActiveUsers);" After the while loop.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-12-2023 08:09 AM
var inActiveUsers = [];
var gr1 = new GlideRecord('sys_user');
gr1.addEncodedQuery('active=false^sys_updated_onONLast week@javascript:gs.beginningOfLastWeek()@javascript:gs.endOfLastWeek()');
gr1.query();
while (gr1.next()) {
inActiveUsers.push(gr1.sys_id.toString());
}
function knowledgebase(inActiveUsers) {
gs.log("success111");
if (inActiveUsers) {
gs.log("success1");
for (var i = 0; i < inActiveUsers.length; i++) {
gs.info("inActiveUser[i]" + inActiveUsers[i]);
var kbase = new GlideRecord('kb_knowledge_base');
kbase.addQuery('kb_managers', 'LIKE', inActiveUsers[i]);
kbase.query();
while (kbase.next()) {
var mgr = kbase.kb_managers.toString().split(',');
gs.log("kbase.kb_managers" + kbase.kb_managers);
for (var j = 0; j < mgr.length; j++) {
if (mgr[j] == inActiveUsers[i]) {
var remove = mgr.indexOf(mgr[j]); // get the position of the element to be removed
mgr.splice(remove, 1); // remove the element from the array
}
}
kbase.kb_managers = mgr.toString();
gs.log("BalanceAfterRemoval" + kbase.kb_managers);
kbase.autoSysFields(false);
kbase.update();
}
}
}
}
// Call the knowledgebase function with the inActiveUsers array
knowledgebase(inActiveUsers);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-12-2023 08:23 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-12-2023 08:35 AM
ok sure but please accept solution if my code help you and for another one post question again i try to give answer
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-12-2023 07:51 AM - edited ‎09-12-2023 07:55 AM
Hi Amrutha,
I don't see where you call the function in the script.
add "knowledgebase(inActiveUsers);" After the while loop.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-12-2023 08:07 AM
Hi Mega,
I tried to add "knowledgebase(inActiveUsers);" after while loop but its not working. Inactive users who is updated on last week in kb_managers field is not getting removed.
Thank you!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-12-2023 08:09 AM
var inActiveUsers = [];
var gr1 = new GlideRecord('sys_user');
gr1.addEncodedQuery('active=false^sys_updated_onONLast week@javascript:gs.beginningOfLastWeek()@javascript:gs.endOfLastWeek()');
gr1.query();
while (gr1.next()) {
inActiveUsers.push(gr1.sys_id.toString());
}
function knowledgebase(inActiveUsers) {
gs.log("success111");
if (inActiveUsers) {
gs.log("success1");
for (var i = 0; i < inActiveUsers.length; i++) {
gs.info("inActiveUser[i]" + inActiveUsers[i]);
var kbase = new GlideRecord('kb_knowledge_base');
kbase.addQuery('kb_managers', 'LIKE', inActiveUsers[i]);
kbase.query();
while (kbase.next()) {
var mgr = kbase.kb_managers.toString().split(',');
gs.log("kbase.kb_managers" + kbase.kb_managers);
for (var j = 0; j < mgr.length; j++) {
if (mgr[j] == inActiveUsers[i]) {
var remove = mgr.indexOf(mgr[j]); // get the position of the element to be removed
mgr.splice(remove, 1); // remove the element from the array
}
}
kbase.kb_managers = mgr.toString();
gs.log("BalanceAfterRemoval" + kbase.kb_managers);
kbase.autoSysFields(false);
kbase.update();
}
}
}
}
// Call the knowledgebase function with the inActiveUsers array
knowledgebase(inActiveUsers);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎09-12-2023 08:30 AM
Hi Harish,
Its working now. Thank you for your quick help.
In similar manner I have tried for assignment data lookup table, but it's not working.
Could you please help as this as well. It would be great helpful.
Thank you!!