0
votes

I have a custom SharePoint online New from. Here there are 4 people picker fields which allow multiple user entries.

There are 4 SP groups relevant to each people picker field.

On Save (PreSaveAction), I want to add users from each people picker in respective SP groups. (using Javascript/jQuery REST)

Is it possible?

1

1 Answers

0
votes

I followed below approach to achieve my requirement:

var AppUsrs =[]; // array to store email ID of multiple users from people picker field

function PreSaveItem(){

    //SP group 1
    var SecVal = getPickerInputElement('ff171');// As there was multiple people picker fields, I took the position. 

    for(var k=0;k<SecVal.length;k++) // loop through number of users in people field and add each of them in SP group 
    {
        AddUserToSPGrp(SecVal[k]);  
    }       
    return true;
}

function getPickerInputElement(identifier) 
{
    AppUsrs =[];
    var tags = document.getElementsByTagName('DIV');
    for (var i=0; i < tags.length; i++)
    {    
       var tempString = tags[i].id;    
       if ((tempString.indexOf(identifier) > 0) && (tempString.indexOf('UserField_upLevelDiv') > 0))
       {
         var innerSpans = tags[i].getElementsByTagName("SPAN");
         for(var j=0; j < innerSpans.length; j++) 
          {          
            if(innerSpans[j].id != 'content') 
             {   AppUsrs.push(innerSpans[j].id.split('|')[2]);  // get email ID of users                        
             }                      
           }     
        return AppUsrs;
        }   
     }   
    return null;  
  }

function AddUserToSPGrp(emailIDUsr) {  
    var clientContext = new SP.ClientContext.get_current();  
    var siteGroups = clientContext.get_web().get_siteGroups();  
    var web = clientContext.get_web();  
    spGroup = siteGroups.getByName('SP group Name');  
    user = web.ensureUser(emailIDUsr);  
    var userCollection = spGroup.get_users();  
    userCollection.addUser(user);  
    clientContext.load(user);  
    clientContext.load(spGroup);  
    clientContext.executeQueryAsync(onQuerySucceeded, onQueryFailed);  
}  

function onQuerySucceeded() {  
    console.log('success');  
}  

function onQueryFailed() {  
     console.log('Request failed.');  
}  

I repeated the same for adding users from other people field to other SP groups.