Requirement: To get all the user names from the SharePoint group "Deliverable Owners" and sync with a custom list called "Team Members" in a button click.
Solution: This is done using jQuery and SharePoint web services.
<script type="text/javascript"
src="https://siteurl/Documents/jquery-1.8.3.min.js"></script><script type="text/javascript"
src="https://siteurl/Documents/jquery.SPServices-0.7.2.min.js"></script><script type="text/javascript"> $(document).ready(function() { $("#syncUsers").click(function()
//'syncUsers' is the ID of button control added in the CEWP {var errorOccured = DeleteUsersFromTeamMembersList();if(!errorOccured){AddUsersToTeamMembersList();} });}); // to delete the existing users from the custom listfunction DeleteUsersFromTeamMembersList(){var errorOccured =
false;$().SPServices({ operation:
"GetListItems", async:
false, debug:
true, listName:
"Team Members", CAMLViewFields:
"<ViewFields></ViewFields>", completefunc: function (xData, Status) { $(xData.responseXML).SPFilterNode("z:row").each(function()
{ $().SPServices({ operation:
"UpdateListItems", async:
false, debug:
true, batchCmd:
"Delete", listName:
"Team Members", ID: $(this).attr("ows_ID"), completefunc: function (xData, Status) { msgData = xData.responseText; isError = msgData.indexOf("ErrorText"); if
(isError > 0) { // Error creating fields! alert("Error deleted user names from Team Member list!"); errorOccured =
true; } } }); }); } }); return
errorOccured;}//add all the users from the sharepoint group to custom list.function AddUsersToTeamMembersList(){var alreadyProcessed =
false;var userName ;var iD;var userID;var errorOccured =
false;$().SPServices({operation:
"GetUserCollectionFromGroup",groupName:
"Deliverable Owners",completefunc: function (xData, Status) {$("#results").text(xData.responseXML.xml);$(xData.responseXML).find("User").each(function () { userName = $(this).attr("LoginName"); iD = $(this).attr("ID"); userID = iD +";#"+userName; $().SPServices({operation:
"UpdateListItems",<); iD = $(this).attr("ID"); userID = iD +";#"+userName; $().SPServices({async:
false,batchCmd:
"New",listName:
"Team Members",valuepairs: [["User",userID ]],completefunc: function(xData, Status){msgData = xData.responseText;isError = msgData.indexOf("ErrorText");if
(isError > 0) {// Error creating fields!alert("Error synchronizing user names!");errorOccured =
true;}}
});}); if( errorOccured ==
false){alert("User name synchronized successfully.");$(window.location).attr('href',
'currentpagename.aspx');}
}});}</script>Limitations & Prerequisite
- The performance of this code is affected based on the size of the user group.
- The Team Members custom list must have "User" field with people and group type.