Oh! 365 blog

Office 365 と生きていく

【SPO】サイトテンプレート機能が表示されないときに確認する項目

オンプレスの SharePoint Server を利用していた場合、サイトの横展開の機能といえばサイト テンプレートを思いつくと思います。クラウドになった SharePoint Online においても、制限事項はあるものの、まだまだ利用されるシーンを多く見ます。本機能は、サイトの設定によって、表示/非表示が切り替わるため、利用するサイトにおいて、テンプレートの項目が表示されていない場合は本記事の項目をチェックし、当てはまっていないかを確認してみてください。なお、公開情報で多くの情報が記載されているため、他の記事に比べて公開情報を多めにリンクしています。

サイトテンプレート機能が表示されない場合とは、以下のような状況を想定しています。

f:id:keisuke-blog:20201227111739p:plain
サイトテンプレート機能
f:id:keisuke-blog:20201227111604p:plain
サイトの設定にサイトテンプレートが表示されていない

注意事項

以下の公開記事に記載があるように、SPO においてはクラシックサイトのみサポート対象となっています。これはおそらくサイトコレクションのテンプレートでいう STS#0 で作られたサイトのみという意味だと思います。そのため、コミュニケーションサイト (SITEPAGEPUBLISHING#0)、モダンチームサイト (STS#3)、および、Teams 等で使用する Microsoft 365 グループのサイト (GROUP#0) 等のサイトではサポートされない機能となります。

f:id:keisuke-blog:20201227103309p:plain
SPO ではクラシックサイトのテンプレート (STS#0) のみがサポート対象

https://docs.microsoft.com/ja-jp/sharepoint/dev/general-development/save-download-and-upload-a-sharepoint-site-as-a-template


また、クラシックサイトにおいてはサポート対象とありますが、サイトテンプレートは、ある時点のサイトの状態をスナップショットとしてパッケージ化する機能のため、SPO とは相性が悪いです。オンプレミス製品では、ユーザーの意思で更新を制御できましたが、クラウド製品である SPO では日々サービス側で機能更新が行われます。そのため、ある時期に作成したサイトテンプレートを展開しようとした際に、当時は存在していたけれど、最新の環境においてはサービス側で削除された列や機能があるなどで、パッケージと現環境での情報に不整合が生じ、サイトテンプレートの展開に失敗することが頻発します。SPO におけるサイトテンプレート利用の注意点や代替機能については、サポートチームが過去に投稿しているようですのでリンクしておきます。

https://social.msdn.microsoft.com/Forums/ja-JP/a07667e0-7921-4cd7-b699-f85345c3745b/-?forum=sharepointsupportteamja

確認項目1: サイトのテンプレートを確認する

上述の公開情報に記載がありますが、SPO においてはクラシックサイトのみサポート対象と記載があります。まずは、利用しているサイトがクラシックサイトのテンプレートを利用しているのかを確認します。確認方法は、複数ありますが、SharePoint 管理センターから確認するか、SharePoint 管理シェルを使用します。基本的にサイトコレクションのテンプレートがモダンのテンプレートの場合、サイトレコレクション全体のサイトにおいてサイトテンプレート機能は表示されていないので、サイトコレクションのテンプレートを確認することが一般的です。(後述しますが、サイトコレクション単位でサイトスクリプトがブロックされるため)

SharePoint 管理センターから確認する場合

アクティブなサイトの一覧のビューにある [テンプレート] 列から判断可能です。チームサイト (クラシック表示)

f:id:keisuke-blog:20201227113344p:plain
チームサイト (クラシック表示) であればクラシックサイト
PowerShell で確認する場合

SharePoint 管理シェルをダウンロードして、以下のコマンドを実行することで使用しているサイトのテンプレートを確認し、STS#0 であればクラシックサイトのテンプレートです。

Get-SPOSite -Identity [SiteUrl] | select Temlate

他のテンプレートの種類については以下の記事にまとめているので必要に応じてご参考ください。

www.samurainote.com

確認項目2: カスタムスクリプトがブロックされていないかを確認する

多くの場合これに該当すると思います。カスタムスクリプトの詳細や設定の影響については公開情報に記載がありますのでご参考ください。

f:id:keisuke-blog:20201227114450p:plain

カスタム スクリプトを許可または禁止する - SharePoint in Microsoft 365 | Microsoft Docs

カスタムスクリプトがブロックされている場合には、サイトテンプレート機能やライブラリのテンプレート機能が利用できないことが明記されています。そもそも、モダンテンプレートでサイトテンプレートが利用できない理由も、作成時のデフォルト値がカスタムスクリプトをブロックする設定になっているからです。クラシックサイトではデフォルト値が "許可" になっているので、サイトテンプレート機能が利用できます。例えば、クラシックサイトのテンプレートで作成されたサイトコレクションにおいて、サイトコレクション作成後にカスタムスクリプトをブロックに変更した場合は、サイト テンプレートが利用できなくなります。

サイトコレクションにおけるカスタムスクリプトの設定は以下の PowerShell コマンドで取得します。

Get-SPOSite -Identity [URL] | select DenyAddAndCustomizePages

戻り値
Enabled: ブロック
Disabled: 許可

返り値が Disabled であり、このサイトコレクションで許可に変更したい場合は以下のコマンドを実行します。

Set-SPOSite -Identity [URL] -DenyAddAndCustomizePages 0

カスタムスクリプトを許可する場合の考慮事項については公開情報がありますのでご参考ください。

カスタム スクリプトを許可する場合のセキュリティに関する考慮事項 - SharePoint in Microsoft 365 | Microsoft Docs

確認項目3: SharePoint Server 発行インフラストラクチャ機能の状態

一番見落としがちですが、[サイトコレクションの機能] のうち、発行インフラストラクチャ機能をアクティブ化している場合、サイトテンプレート機能が表示されなくなります。

f:id:keisuke-blog:20201227132213p:plain

サイトコレクションの機能は、サイトコレクションの管理者ユーザーで、トップサイトのサイトの設定ページにアクセスしたときにのみ表示されます。注意点として、一度でもアクティブ化した場合は、あとで非アクティブに戻したとしても、サイトのテンプレート機能は表示されません。サイトやサイトコレクションの機能をアクティブ化/非アクティブ化すると、内部的な Feature が展開/削除されるのですが、おそらくこの機能に関しては非アクティブ化時に削除されない内部的な機能があるのだと思います。もしクラシックサイトを利用しており、かつ、カスタムスクリプトを許可しているにもかかわらず、[テンプレートとしてサイトを保存] の項目が表示去れていない場合は、発行インフラストラクチャ機能がアクティブ化されているか、過去にアクティブ化されていたか可能性があります。

これに該当する場合は、サイトテンプレートの利用をあきらめて、代替の手段 (サイトスクリプトや PnP リモートプロビジョニング)、あるいは、サードパーティで要望を満たすようなツールがないかを検討する方向になると思います。

今回の投稿は以上となります。