【问题标题】:Add users from multi selection people picker field to SP group将多选人员选择器字段中的用户添加到 SP 组
【发布时间】:2018-11-15 16:34:07
【问题描述】:
我有一个自定义 SharePoint Online New from。
这里有 4 个人员选择器字段,允许多个用户输入。
每个人员选择器字段有 4 个 SP 组。
在保存 (PreSaveAction) 时,我想从各个 SP 组中的每个人员选择器添加用户。 (使用 Javascript/jQuery REST)
有可能吗?
【问题讨论】:
标签:
javascript
jquery
rest
sharepoint-online
【解决方案1】:
我遵循以下方法来实现我的要求:
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.');
}
我重复了相同的操作,将其他人字段中的用户添加到其他 SP 组。