💻

SharePoint Online のリストで評価の設定を有効化する

2021/01/16に公開

この記事について

SharePoint Online (以下、SPO) のコミュニケーションサイト以下にあるリストでは、これまで SharePoint リストで存在していた評価の設定の項目が無効化されています。

例えば、SharePoint Server から移行する際、移行先の SPO のリストでこの評価の設定の設定項目がない場合、リストアイテムのデータ移行に大きな支障を与える可能性があります。
リストに評価の設定がないという事象は、サイトコレクションがチームサイトであれば問題なく表示されます。しかし、サイトコレクションがコミュニケーションサイトで作成されている場合、サブサイト以下に作成されているリストについても、評価の設定は表示されません。

そのため、PowerShell を使って、この評価の設定の設定項目がコミュニケーションサイト以下にあるリストでも表示されるようにする方法について、調査した内容をまとめました。

事象解決の概要

からめもさんのブログ に解決方法が記載されていました。
SPO の GUI の画面上では設定できないものの、SharePoint Online Management Shell を使って、 CSOM から機能を有効化させると、表示を行うことができました。(感謝)

ただし、この方法で機能を有効化すると、指定したサイトだけではなく、サイトコレクションである コミュニケーションサイト以下 (サブサイト以下を含む) すべてのリストの設定が更新されてしまう というもののようなので、その点は注意が必要だと思います。

機能の有効化手順

以下に記載の手順は Windows OS でのみ、可能です。

SharePoint Online Management Shell のインストール

インストーラー (.msi) をダウンロードしてインストールするか、PowerShell ギャラリーからモジュールをインストールすることで使用が可能になります。

Install-Module -Name Microsoft.Online.SharePoint.PowerShell

機能の有効化

SharePoint Online Management Shell で、以下のコマンドを実行します。
{{siteurl}} には、適用したいサイトコレクションを入力してください。(サブサイトも指定できますが、実行してもサイトコレクション単位で設定が上書きされるようです)
{{username}} には、$siteurl で指定したサイトコレクションの管理者権限をもつユーザーを指定します。
{{password}} には、{{username}} で指定したユーザーのパスワードを指定します。

$siteurl = "{{siteurl}}"
$username = "{{username}}"
$password = "{{password}}"

$password = ConvertTo-SecureString $password -AsPlainText -Force
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password)
$context = New-Object Microsoft.SharePoint.Client.ClientContext($siteurl)
$context.Credentials = $credentials

$context.Site.Features.Add('915c240e-a6cc-49b8-8b2c-0bff8b553ed3', $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) > $null
$context.ExecuteQuery()

リスト設定を確認

SharePoint Online Management Shell で評価の設定の有効化を行ったら、再度リストの設定画面を確認します。
先ほどは表示されていなかった評価の設定メニューが、コミュニケーションサイト以下にあるリストでも表示されるようになっているはずです。

機能の無効化

評価の設定機能を無効化する場合は、機能の有効化時に実行した、以下のコマンドを変更することで、無効化することができます。

# $context.Site.Features.Add('915c240e-a6cc-49b8-8b2c-0bff8b553ed3', $true, [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) > $null
$context.Site.Features.Remove('915c240e-a6cc-49b8-8b2c-0bff8b553ed3', [Microsoft.SharePoint.Client.FeatureDefinitionScope]::None) > $null

さいごに

チームサイトでは表示されている評価の設定項目が、コミュニケーションサイト側で表示されないようになっている (機能が無効になっている) 理由は、正直よくわからない部分がありますが、Microsoft 公式でも、この方法を推奨されているようでした。
こういった細かい差異については、どこかで一覧で確認できたらいいなと思います。(あったら教えてください)

参考情報

Discussion