ユーザーをグループに追加する

最終更新日: 2010年7月7日

適用対象: SharePoint Foundation 2010

Microsoft SharePoint Foundation で複数のユーザーをグループに追加するには、新しいユーザーや既存のユーザーを個別に追加する場合は AddUserToGroup メソッドを使用し、既存ユーザーのコレクションを追加する場合は AddUserCollectionToGroup メソッドを使用します。

手順

始める前に、Microsoft Visual Studio で Windows Forms アプリケーションを作成します。SharePoint Foundation の Web サービスへの Web 参照を設定する方法の詳細については、「Windows SharePoint Services Web サービスの紹介」を参照してください。

サイトまたはサブサイトから複数のユーザーを追加する

Web サイトからすべてのユーザーを取得するには、GetUserCollectionFromSite メソッドまたは GetUserCollectionFromWeb メソッドを使用します。次に、AddUserCollectionToGroup メソッドを使用することによって、ユーザーのコレクションを反復処理し、指定されたグループに 1 人ずつ追加します。

サイトまたはサブサイトからユーザーをグループに追加するには

  1. Windows Forms アプリケーション プロジェクトを作成して Web 参照を追加した後、デザイン ビューで [Form1] を開き、[ツールボックス] を開いてから、Button コントロールをフォームにドラッグします。

  2. ボタンをダブルクリックしてコード エディターを表示し、以下のコード行を Button1_Click イベント ハンドラーに追加します。

    'Declare and initialize a variable for the UserGroup Web service.
    Dim userGroup As New Web_Reference.UserGroup()
    
    'Authenticate the current user by passing their default 
    'credentials to the Web service from the system credential cache and, 
    'if adding users from a subsite, set the Url property for the 
    'service.
    userGroup.Credentials = System.Net.CredentialCache.DefaultCredentials
    userGroup.Url = "http://Server_Name/Subsite_Name/_vti_bin/UserGroup.asmx"
    
    'Declare an XmlNode object and initialize it with the XML response 
    'from either the GetUserCollectionFromWeb method or the 
    'GetUserCollectionFromSite method.
    Dim usersSite As System.Xml.XmlNode = userGroup.GetUserCollectionFromWeb()
    
    'Declare another XmlNode object and initialize it with the first 
    'child node returned from the previous method.
    Dim userNode As System.Xml.XmlNode = usersSite.FirstChild
    
    'Pass the first child node and its contents as the XMLNode object 
    'parameter for the method.
    userGroup.AddUserCollectionToGroup("Group_Name", userNode)
    
    /*Declare and initialize a variable for the UserGroup Web service.*/
    Web_Reference.UserGroup userGroup = new Web_Reference.UserGroup();
    
    /*Authenticate the current user by passing their default 
    credentials to the Web service from the system credential cache and, 
    if adding users from a subsite, set the Url property for the 
    service.*/
    userGroup.Credentials = 
       System.Net.CredentialCache.DefaultCredentials;
    userGroup.Url = 
       "http://Server_Name/Subsite_Name/_vti_bin/UserGroup.asmx";
    
    /*Declare an XmlNode object and initialize it with the XML response 
    from either the GetUserCollectionFromWeb method or the 
    GetUserCollectionFromSite method*/
    System.Xml.XmlNode usersSite = userGroup.GetUserCollectionFromWeb();
    
    /*Declare another XmlNode object and initialize it with the first 
    child node returned from the previous method.*/
    System.Xml.XmlNode userNode = usersSite.FirstChild;
    
    /*Pass the first child node and its contents as the XmlNode object 
    parameter for the method.*/
    userGroup.AddUserCollectionToGroup
       ("Group_Name",userNode);
    
  3. [デバッグ] メニューの [デバッグ開始] をクリックして、フォームをテストします。フォームのボタンをクリックして、指定したグループにユーザーを追加します。

単一ユーザーを追加する

新しいユーザーまたは既存のユーザーをグループに追加するには、AddUserToGroup メソッドを使用します。グループ内のすべてのユーザーに関する情報を取得するには、GetUserCollectionFromGroup メソッドを使用します。

単一ユーザーをグループに追加し、グループ メンバーを表示するには

  1. Windows Forms アプリケーションを作成して、Web 参照を追加し、5 つの TextBox コントロール、1 つの Label コントロール、および 1 つの Button コントロールをフォームに追加します。

  2. ボタンをダブルクリックしてコード エディターを表示し、以下のコード行を Button1_Click イベント ハンドラーに追加します。

    'Declare and initialize a variable for the UserGroup Web service, 
    'and authenticate the current user by passing their default 
    'credentials to the Web service from the system credential cache.
    Dim userGroup As New Web_Reference.UserGroup()
    userGroup.Credentials = System.Net.CredentialCache.DefaultCredentials
    
    'Gather data from the text boxes.
    Dim groupName As String = textBox1.Text
    Dim userName As String = textBox2.Text
    Dim userLoginName As String = textBox3.Text
    Dim userEmail As String = textBox4.Text
    Dim userNotes As String = textBox5.Text
    
    'Add the specified user to the group. 
    userGroup.AddUserToGroup(groupName, userName, userLoginName, userEmail, userNotes)
    
    'Declare an XmlNode object and initialize it with the 
    'XML response from the GetUserCollectionFromGroup method, 
    'declare a second XmlNode object and initialize it with 
    'the first child of the first node returned, and then 
    'declare and initialize an XmlNodeList object with the 
    'child nodes of the second node.
    Dim usersNode1 As System.Xml.XmlNode = userGroup.GetUserCollectionFromGroup(groupName)
    Dim usersNode2 As System.Xml.XmlNode = usersNode1.FirstChild
    Dim userNodes As System.Xml.XmlNodeList = usersNode2.ChildNodes
    
    'Iterate through the collection of user nodes and 
    'parse out the Name, LoginName, Email, and Notes 
    'attribute values for each item and 
    'then display the values returned.
    Dim user As System.Xml.XmlNode
    For Each user In  userNodes
       Dim name As String = user.Attributes("Name").Value
       Dim loginName As String = user.Attributes("LoginName").Value
       Dim email As String = user.Attributes("Email").Value
       Dim notes As String = user.Attributes("Notes").Value
    
       label1.Text += ControlChars.Lf + ControlChars.Lf + name + " : " 
          + loginName + " : " + email + " : " + notes
    Next user
    
    /*Declare and initialize a variable for the UserGroup Web service, 
    and authenticate the current user by passing their default 
    credentials to the Web service from the system credential cache*/
    Web_Reference.UserGroup userGroup = new Web_Reference.UserGroup();
    userGroup.Credentials = 
       System.Net.CredentialCache.DefaultCredentials;
    
    /*Gather data from the text boxes.*/
    string groupName = textBox1.Text;
    string userName = textBox2.Text;
    string userLoginName = textBox3.Text;
    string userEmail = textBox4.Text;
    string userNotes = textBox5.Text;
    
    /*Add the specified user to the group. */
    userGroup.AddUserToGroup(groupName, userName, userLoginName, 
       userEmail, userNotes);
    
    /*Declare an XmlNode object and initialize it with the XML response 
    from the GetUserCollectionFromGroup method, declare a second XmlNode 
    object and initialize it with the first child of the first node 
    returned, and then declare and initialize an XmlNodeList object with 
    the child nodes of the second node.*/
    System.Xml.XmlNode usersNode1 = 
       userGroup.GetUserCollectionFromGroup(groupName);
    System.Xml.XmlNode usersNode2 = usersNode1.FirstChild;
    System.Xml.XmlNodeList userNodes = usersNode2.ChildNodes;
    
    /*Iterate through the collection of user nodes and parse out the 
    Name, LoginName, Email, and Notes attribute values for each item and 
    then display the values returned.*/
    foreach (System.Xml.XmlNode user in userNodes)
    {
        string name = user.Attributes["Name"].Value;
        string loginName = user.Attributes["LoginName"].Value;
        string email = user.Attributes["Email"].Value;
        string notes = user.Attributes["Notes"].Value;
    
        label1.Text += "\n\n" + name + " : " + loginName + " : " + email 
            + " : " + notes;
    }
    
  3. [デバッグ] メニューの [デバッグ開始] をクリックして、フォームをテストします。フォームのボタンをクリックして、指定したグループにユーザーを追加し、グループのメンバーを表示します。

XML ファイル内の情報からユーザーを追加する

ユーザー データのコレクションを DataSet オブジェクトに読み込んでから、AddUserToGroup メソッドを使用してコレクションを反復処理し、各ユーザーをグループに追加します。

XML ファイル内の情報からユーザーをグループに追加するには

  1. Windows Forms アプリケーショントを作成し、Web 参照を追加して、TextBox コントロールと Button コントロールをフォームに追加します。

  2. ボタンをダブルクリックしてコード エディターを表示し、以下のコード行を Button1_Click イベント ハンドラーに追加します。

    'Declare and initialize a variable for the UserGroup Web service, 
    'and authenticate the current user by passing their default 
    'credentials to the Web service from the system credential cache.
    Dim userGroup As New Web_Reference.UserGroup()
    userGroup.Credentials = System.Net.CredentialCache.DefaultCredentials
    
    'Instantiate a DataSet control, declare and initialize a string 
    'specifying the full path to the XML file to use as a source.
    Dim dataSet As New DataSet()
    Dim xmlPath As String = "Full_Path_To_XML_File"
    
    'Read the data from the XML file into the dataset object.
    dataSet.ReadXml(xmlPath)
    
    'Declare a variable for the group name typed in the text box.
    Dim groupName As String = textBox1.Text
    
    'Iterate through each row in the DataSet object, assign their 
    'values to variables for each parameter, and add each user to the 
    'specified group.
    Dim row As DataRow
    For Each row In  dataSet.Tables(0).Rows
       Dim userName As String = row("name").ToString()
       Dim userLoginName As String = row("loginname").ToString()
       Dim userEmail As String = row("email").ToString()
       Dim userNotes As String = row("notes").ToString()
    
       userGroup.AddUserToGroup(groupName, userName, userLoginName, userEmail, userNotes)
    Next row
    
    /*Declare and initialize a variable for the UserGroup Web service, 
    and authenticate the current user by passing their default 
    credentials to the Web service from the system credential cache.*/
    Web_Reference.UserGroup userGroup = new Web_Reference.UserGroup();
    userGroup.Credentials = 
        System.Net.CredentialCache.DefaultCredentials;
    
    /*Instantiate a DataSet control, declare and initialize a string 
    specifying the full path to the XML file to use as a source.*/
    DataSet dataSet = new DataSet();
    string xmlPath = "Full_Path_To_XML_File";
    
    /*Read the data from the XML file into the DataSet object.*/
    dataSet.ReadXml(xmlPath);
    
    /*Declare a variable for the group name typed in the text box.*/
    string groupName = textBox1.Text;
    
    /*Iterate through each row in the DataSet object, assign their 
    values to variables for each parameter, and add each user to the 
    specified group.*/
    foreach (DataRow row in dataSet.Tables[0].Rows)
    {
        string userName = row["name"].ToString();
        string userLoginName = row["loginname"].ToString();
        string userEmail = row["email"].ToString();
        string userNotes = row["notes"].ToString();
    
        userGroup.AddUserToGroup(groupName, userName, userLoginName, userEmail, userNotes);
    }
    
  3. [デバッグ] メニューの [デバッグ開始] をクリックして、フォームをテストします。フォームのボタンをクリックして、指定したグループにユーザーを追加し、グループのメンバーを表示します。