Microsoft Graph PowerShellを使ったSharePointリストアイテム操作

はじめに

今回は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 からでも実行することは可能です。

執筆担当者プロフィール
梅村 聡

梅村 聡(日本ビジネスシステムズ株式会社)

CS本部DI部CAG所属。主にMicrosoft 365関連の開発を担当。趣味はバレーボールとアニメ鑑賞。

担当記事一覧