Making default favorites and bookmark groups for all active users via script

Brandon Akers
Tera Contributor
Trying to run a script that grabs 2 Bookmark Groups and 9 Bookmarks to add to each user that is active. I am able to get the bookmarks and bookmark groups created, but am unable to assign the newly created bookmarks to the bookmark groups.
 
var grBookmarkGroup1 = new GlideRecord('sys_ui_bookmark_group');
var grBookmarkGroup2 = new GlideRecord('sys_ui_bookmark_group');
var grBookmark1 = new GlideRecord('sys_ui_bookmark');
var grBookmark2 = new GlideRecord('sys_ui_bookmark');
var grBookmark3 = new GlideRecord('sys_ui_bookmark');
var grBookmark4 = new GlideRecord('sys_ui_bookmark');
var grBookmark5 = new GlideRecord('sys_ui_bookmark');
var grBookmark6 = new GlideRecord('sys_ui_bookmark');
var grBookmark7 = new GlideRecord('sys_ui_bookmark');
var grBookmark8 = new GlideRecord('sys_ui_bookmark');

// Sys Id of the bookmark groups and bookmarks to duplicate
grBookmarkGroup1.get('<sys_ID>'); //Case Managment
grBookmarkGroup2.get('<sys_ID>'); //Incident Management
//Incidents
grBookmark1.get('<sys_ID>');
grBookmark2.get('<sys_ID>');
grBookmark3.get('<sys_ID>');
grBookmark4.get('<sys_ID>');
//Cases
grBookmark5.get('<sys_ID>');
grBookmark6.get('<sys_ID>');
//grBookmark7.get('<sys_ID>');
//grBookmark8.get('<sys_ID>');

//Look up for each active user
var grUser = new GlideRecord('sys_user');
grUser.addQuery('active', true);
grUser._query();

//Insert bookmarks for each user
while(grUser._next()) {
grBookmarkGroup1.user = grUser.getUniqueValue();
grBookmarkGroup2.user = grUser.getUniqueValue();
grBookmark1.user = grUser.getUniqueValue();
grBookmark2.user = grUser.getUniqueValue();
grBookmark3.user = grUser.getUniqueValue();
grBookmark4.user = grUser.getUniqueValue();
grBookmark5.user = grUser.getUniqueValue();
grBookmark6.user = grUser.getUniqueValue();
grBookmark7.user = grUser.getUniqueValue();
grBookmark8.user = grUser.getUniqueValue();
 
grBookmarkGroup1.insert();
grBookmarkGroup2.insert();
grBookmark1.insert();
grBookmark2.insert();
grBookmark3.insert();
grBookmark4.insert();
grBookmark5.insert();
grBookmark6.insert();
grBookmark7.insert();
grBookmark8.insert();
}
 
// Lookup the newly created bookmark groups using Sys IDs (they should have been inserted)
grBmGroup1 = new GlideRecord('sys_ui_bookmark_group');
grBmGroup1.get(grBookmarkGroup1.sys_id); // Retrieve the new group using sys_id (after insertion)

grBmGroup2 = new GlideRecord('sys_ui_bookmark_group');
grBmGroup2.get(grBookmarkGroup2.sys_id); // Retrieve the new group using sys_id (after insertion)

//setting the bookmark group value to the newly created bookmark group
//need to look up the new created groups to
grBookmark1.setValue('group', grBmGroup1);
grBookmark2.setValue('group', grBmGroup1);
grBookmark3.setValue('group', grBmGroup1);
grBookmark4.setValue('group', grBmGroup1);
grBookmark5.setValue('group', grBmGroup2);
grBookmark6.setValue('group', grBmGroup2);
grBookmark7.setValue('group', grBmGroup2);
grBookmark8.setValue('group', grBmGroup2);
1 ACCEPTED SOLUTION

You should be able to alter the user loop, then end the script there:

//Insert bookmarks for each user
while(grUser._next()) {
    grBookmarkGroup1.user = grUser.getUniqueValue();
    grBookmarkGroup2.user = grUser.getUniqueValue();
    grBookmark1.user = grUser.getUniqueValue();
    grBookmark2.user = grUser.getUniqueValue();
    grBookmark3.user = grUser.getUniqueValue(); 
    grBookmark4.user = grUser.getUniqueValue();
    grBookmark5.user = grUser.getUniqueValue();
    grBookmark6.user = grUser.getUniqueValue();
    grBookmark7.user = grUser.getUniqueValue();
    grBookmark8.user = grUser.getUniqueValue();
 
    var grp1sysid = grBookmarkGroup1.insert();
    var grp2sysid = grBookmarkGroup2.insert();

    grBookmark1.group = grp1sysid;
    grBookmark2.group = grp1sysid;
    grBookmark3.group = grp1sysid;
    grBookmark4.group = grp1sysid;
    grBookmark5.group = grp2sysid;
    grBookmark6.group = grp2sysid;
    grBookmark7.group = grp2sysid;
    grBookmark8.group = grp2sysid;
    
    grBookmark1.insert();
    grBookmark2.insert();
    grBookmark3.insert();
    grBookmark4.insert();
    grBookmark5.insert();
    grBookmark6.insert();
    grBookmark7.insert();
    grBookmark8.insert();
}

View solution in original post

4 REPLIES 4

Brad Bowman
Kilo Patron
Kilo Patron

If you're saying the script is working down to the last section, this could be setting the values, but you're not running an update() on each GlideRecord, so the values aren't saving.  I have to point out that this is a departure from the typical GlideRecord structure to query for records, then maybe update them, or insert new records, but it might work to do both.

Hey Brad,

Thanks for the quick response. looks like I missed the last section of my script.

// Update the bookmarks with the correct group
grBookmark1.update();
grBookmark2.update();
grBookmark3.update();
grBookmark4.update();
grBookmark5.update();
grBookmark6.update();
grBookmark7.update();
grBookmark8.update();
}

You should be able to alter the user loop, then end the script there:

//Insert bookmarks for each user
while(grUser._next()) {
    grBookmarkGroup1.user = grUser.getUniqueValue();
    grBookmarkGroup2.user = grUser.getUniqueValue();
    grBookmark1.user = grUser.getUniqueValue();
    grBookmark2.user = grUser.getUniqueValue();
    grBookmark3.user = grUser.getUniqueValue(); 
    grBookmark4.user = grUser.getUniqueValue();
    grBookmark5.user = grUser.getUniqueValue();
    grBookmark6.user = grUser.getUniqueValue();
    grBookmark7.user = grUser.getUniqueValue();
    grBookmark8.user = grUser.getUniqueValue();
 
    var grp1sysid = grBookmarkGroup1.insert();
    var grp2sysid = grBookmarkGroup2.insert();

    grBookmark1.group = grp1sysid;
    grBookmark2.group = grp1sysid;
    grBookmark3.group = grp1sysid;
    grBookmark4.group = grp1sysid;
    grBookmark5.group = grp2sysid;
    grBookmark6.group = grp2sysid;
    grBookmark7.group = grp2sysid;
    grBookmark8.group = grp2sysid;
    
    grBookmark1.insert();
    grBookmark2.insert();
    grBookmark3.insert();
    grBookmark4.insert();
    grBookmark5.insert();
    grBookmark6.insert();
    grBookmark7.insert();
    grBookmark8.insert();
}

This was it! Thank you, I didn't think to set the variable to the insert!

    var grp1sysid = grBookmarkGroup1.insert();
    var grp2sysid = grBookmarkGroup2.insert();