「東雲 忠太郎」の平凡な日常のできごと

「東雲 忠太郎」の平凡な日常のできごと

2024.02.26
XML
カテゴリ: VB.NET


Imports System.Net.Http

Imports System.Text

Imports System.Threading.Tasks


Module Module1


    Sub Main()

        Dim siteUrl As String = "https://your-sharepoint-site-url"

        Dim username As String = "your-username"

        Dim password As String = "your-password"

        Dim listName As String = "YourListName"

        Dim itemId As Integer = 1 ' 割り当てるリストアイテムのID

        Dim groupName As String = "YourGroupName" ' ロールを割り当てるサイトグループの名前


        AssignRoleToItem(siteUrl, username, password, listName, itemId, groupName).Wait()

    End Sub


    Async Function AssignRoleToItem(siteUrl As String, username As String, password As String, listName As String, itemId As Integer, groupName As String) As Task

        Dim credentials As String = Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}"))


        ' グループ ID を取得

        Dim groupId As Integer = Await GetGroupId(siteUrl, credentials, groupName)


        If groupId <> -1 Then

            ' リストアイテムに対して権限を設定する

            Dim endpointUrl As String = $"{siteUrl}/_api/web/lists/getbytitle('{listName}')/items({itemId})/roleassignments/addroleassignment(principalid={groupId}, roledefid=1073741827)"


            Using client As New HttpClient()

                client.DefaultRequestHeaders.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue("Basic", credentials)

                client.DefaultRequestHeaders.Accept.Add(New System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"))


                Dim response As HttpResponseMessage = Await client.PostAsync(endpointUrl, Nothing)


                If response.IsSuccessStatusCode Then

                    Console.WriteLine($"Role assigned to group '{groupName}' successfully for item ID: {itemId}.")

                Else

                    Console.WriteLine($"Failed to assign role to group for item. StatusCode: {response.StatusCode}")

                End If

            End Using

        Else

            Console.WriteLine($"Group '{groupName}' not found.")

        End If

    End Function


    Async Function GetGroupId(siteUrl As String, credentials As String, groupName As String) As Task(Of Integer)

        Dim groupId As Integer = -1


        Dim endpointUrl As String = $"{siteUrl}/_api/web/sitegroups?$filter=Title eq '{groupName}'"


        Using client As New HttpClient()

            client.DefaultRequestHeaders.Authorization = New System.Net.Http.Headers.AuthenticationHeaderValue("Basic", credentials)

            client.DefaultRequestHeaders.Accept.Add(New System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"))


            Dim response As HttpResponseMessage = Await client.GetAsync(endpointUrl)


            If response.IsSuccessStatusCode Then

                Dim responseContent As String = Await response.Content.ReadAsStringAsync()

                Dim groupData = Newtonsoft.Json.JsonConvert.DeserializeObject(responseContent)


                If groupData("value").Count > 0 Then

                    groupId = groupData("value")(0)("Id")

                End If

            Else

                Console.WriteLine($"Failed to retrieve group information. StatusCode: {response.StatusCode}")

            End If

        End Using


        Return groupId

    End Function

End Module







お気に入りの記事を「いいね!」で応援しよう

Last updated  2024.02.26 03:10:59


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

© Rakuten Group, Inc.
Create a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: