はじめに
今回はMicrosoft Graph PowerShellを使ったSharePointリストアイテムの操作について説明します。
事前準備
Azure ADアプリ登録
Microsoft Graph PowerShellを使うためにAzure ADアプリの登録を行います。
今回は下記のアクセス許可を設定してAzure ADアプリを登録します。
- アクセス許可の種類:アプリケーションの許可
- アクセス許可:Sites.ReadWrite.All
※ 詳細な手順は「Microsoft Graph の認証方法 - JBS Tech Blog」の「アプリ認証(クライアント証明書)」を参考にしてください。
SharePointサイトとリストの作成
検証用にSharePointサイトとリストの作成を行います。
1.まずはSharePointに遷移して、「サイトの作成」をクリックします。
2.チームサイトを選択します。
3.下記の通りに設定し、次へボタンを押下します。
- サイト名:<任意の名前>
- サイトの説明:<任意の説明>
- プライバシーの設定:プライベート
- 言語の設定:日本語
4.サイトの作成が完了したら、完了ボタンを押下します。
5.サイトコンテンツに移動し、新規>リストを選択し、空白のリストを選択します。
6.名前に任意の名前を設定し、作成ボタンを押下します。
7.任意の列を追加します。
8.リストに任意のアイテムを追加します。
SharePoint リスト操作
SharePointサイトの情報取得
SharePointリストを操作する前にSharePointリストが配置されているSharePointサイトの情報を取得することから説明します。
サイト一覧を取得するコマンドは下記の通りです。
Get-MgSite | ft Id,DisplayName -Wrap
SharePointリストの情報取得
取得したサイトIDからサイトに存在するリスト一覧を取得するコマンドは下記の通りです。
Get-MgSiteList -SiteId "<サイトID>"
SharePointリストアイテムの情報取得
取得したサイトIDとリストIDからリストアイテム一覧を取得するコマンドは下記の通りです。
Get-MgSiteListItem -SiteId "<サイトID>" -ListId "<リストID>"
ただし、上記のコマンドではリストアイテムの基本的な情報は取得できるのですが、リストアイテムの項目の値が取得できません。
下記のコマンドのようにExpandPropertyを設定することで、リストアイテムの項目の値を取得することが可能です。
Get-MgSiteListItem -SiteId "<サイトID>" -ListId "<リストID>" -ExpandProperty "Fields" | Select-Object -ExpandProperty "Fields" | Select-Object -ExpandProperty "AdditionalProperties"
or
$items = Get-MgSiteListItem -SiteId "<サイトID>" -ListId "<リストID>" -ExpandProperty "Fields" $items[0].Fields.AdditionalProperties
SharePointリストアイテムの作成
リストアイテムを作成するためのコマンドは下記の通りです。
先にリストアイテム内の項目を定義しておき、パラメーターで渡します。
$params = @{ Fields = @{ Title = "test3" SingleLine = "xxx" Choice = "選択肢 #3" Number = 100 Currency = 200 YesNo = $False } } New-MgSiteListItem -SiteId "<サイトID>" -ListId "<リストID>" -BodyParameter $params
SharePointリストアイテムの更新
リストアイテムを更新するコマンドは下記の通りです。
項目は更新するものだけ定義します。指定しなかった項目は更新されません。
$params = @{ SingleLine = "yyyy" Number = 300 Currency = 400 } Update-MgSiteListItemField -SiteId "<サイトID>" -ListId "<リストID>" -ListItemId "<リストアイテムID>" -BodyParameter $params
SharePointリストアイテムの削除
リストアイテムを削除するコマンドは下記の通りです。
Remove-MgSiteListItem -SiteId "<サイトID>" -ListId "<リストID>" -ListItemId "<リストアイテムID>"
まとめ
今回はSharePointリストアイテムの操作について説明しました。
個人的につまづいたのが、SharePointリストアイテムを更新するパラメーターの中にFieldsを入れる必要がなかった事です。気付かず、5分くらい悩んでしまいました。
また、ファイルアップロード、ファイルダウンロードにも触れたかったのですが、Microsoft Graph PowerShellにはまだ未実装であったため、実装されたら別の記事で紹介したいと思います。
※ファイルアップロード、ファイルダウンロードはMicrosoft Graph APIとしては実装されているので、Invoke-RestMethodを使って、APIを直接実行することでPowerShell からでも実行することは可能です。