Steps for Implementation

  • Get Current Context.
  • Get App web URL and Host Web URL from Query string parameter.
  • Calling CreateMultipleGroup method in document ready.
  • Get web from app context site.
  • Create new group Information
  • Get Role definition by name (permission for the Group)
  • Add group and add the role to the collection.
  • Set Allow membership then set Group Owner
  • Push oMembersGRP in array
  • Then load the array
  • Finally execute

In your JavaScript file write the following code,

  1. // Js code Starts here
  2. 'use strict';
  3. //Get Current Context
  4. var context = SP.ClientContext.get_current();
  5. //Declaring the variables
  6. varhostWebURL, appWebURL;
  7. // this code runs when the DOM is ready and creates a context object which is needed to use the SharePoint object model
  8. $(document).ready(function () {
  9. // Get App web URL and Host Web URL from Query string parameter
  10. hostWebURL = decodeURIComponent(manageQueryStringParameter('SPHostUrl'));
  11. appWebURL = decodeURIComponent(manageQueryStringParameter('SPAppWebUrl'));
  12. //Calling Bulk Edit method in document ready
  13. CreateMultipleGroup ();
  14. });
  15. function CreateMultipleGroup()
  16. {
  17. var permission = ["TestGroup", "TestGroup1", "TestGroup2"];
  18. var membershipArray = [];
  19. var deferred = $.Deferred();
  20. var currentWEB = context.get_web();
  21. // Create Group information for Group
  22. var membersGRP = new SP.GroupCreationInformation();
  23. // Create a new RoleDefinitionBindingCollection.
  24. var rdContribute = currentWEB.get_roleDefinitions().getByName("Contribute");
  25. for (var i = 0; i < permission.length; i++)
  26. {
  27. var collContribute = SP.RoleDefinitionBindingCollection.newObject(context);
  28. membersGRP.set_title(permission[i]);
  29. membersGRP.set_description('Use this group to grant people contribute permissions to the SharePoint site:');
  30. //add group
  31. var oMembersGRP = currentWEB.get_siteGroups().add(membersGRP);
  32. // Add the role to the collection.
  33. collContribute.add(rdContribute);
  34. //set Allow membership edit to false
  35. oMembersGRP.set_allowMembersEditMembership(false);
  36. //Set group Wowner
  37. var groupOwner = currentWEB.get_siteGroups().getByName("GroupName");
  38. oMembersGRP.set_owner(groupOwner);
  39. oMembersGRP.set_onlyAllowMembersViewMembership(false);
  40. oMembersGRP.update();
  41. //Push membership in array
  42. membershipArray.push(oMembersGRP);
  43. context.load(membershipArray[membershipArray.length - 1]);
  44. }
  45. //Execute Query
  46. context.executeQueryAsync(
  47. function () {
  48. deferred.resolve();
  49. alert("Group Created Successfully");
  50. },
  51. function (sender, args) {
  52. deferred.reject();
  53. alert("Failed to create groups " + args.get_message());
  54. });
  55. return deferred.promise();
  56. }
  57. //method for read query string value
  58. function manageQueryStringParameter(paramToRetrieve) {
  59. var params = document.URL.split("?")[1].split("&");
  60. var strParams = "";
  61. for (var i = 0; i < params.length; i = i + 1) {
  62. var singleParam = params[i].split("=");
  63. if (singleParam[0] == paramToRetrieve) {
  64. return singleParam[1];
  65. }
  66. }
  67. }
Summary

In this blog we have explored how to create multiple SP user group in single Asynchronous process using JSOM. If we follow the single asynchronous process for creating multiple groups the performance will improve. Happy Coding!