テナントに全てのサイトで利用可能なサイト列を作り同期する

SharePoint

今回はテナントにコンテンツタイプサイト列を作成し、それを複数サイトで共有する方法についてご紹介します。

この設定を行うことでサイトの管理が大幅に簡略化されます。

複数のサイトに点在するリストやドキュメントライブラリなどに共通したカスタム列を適用したり、それらに同じ書式を適用したり、管理するサイト数が多ければ多いほどそのメリットが活きてきます

ということで、今回は複数サイトのサイトのページライブラリに「カテゴリ」という共通の列を追加する方法を例にし、説明していきます。

複数サイトで共有可能なサイト列を作成する

設定の流れとしてまずはテナントにコンテンツタイプを作成し、そのコンテンツタイプにカスタム列を追加します。

テナントに作成したコンテンツタイプは全サイトから参照可能なため、それを対象のライブライに読み込ませるわけです。

初回の設定はまずまず面倒ですが、その後の更新は画期的に楽になります。

テナントにコンテンツタイプを登録する

SharePoint管理センターの[コンテンツ サービス]-[コンテンツ タイプ ギャラリー]を開きます。
そして「+コンテンツ タイプの作成」をクリックします。

作成画面で以下のように設定します。

項目説明入力例
名前任意の名前を入力しますドキュメント(カテゴリメンテ用)
カテゴリ追加するコンテンツタイプを選択する際の分類に使われます新規 – カスタム コンテンツ タイプ
親カテゴリコンテンツタイプには親子関係があり、親の列の種類を引き継ぎますドキュメント コンテンツ タイプ
コンテンツの種類コンテンツの種類を選択しますドキュメント

各項目の設定値は用途に応じて変更してください。

[作成]をクリックすると保存され、コンテンツタイプの設定ページに推移します。

「+サイト列の追加」ー「サイト内の新しい列の作成」をクリックします。

列の作成画面では以下のように設定します。

項目説明入力例
名前任意の名前を入力します
アルファベット(スペースなし推奨)
TenantDocumentCategory
カテゴリ追加する列を選択する際の分類に使われます新規 – テナントカスタム
種類列の種類を選択します。選択肢

列名は最初にアルファベット(スペースなし)で設定し、あとで日本語に設定しなおすのが基本です。
設定時の列名は以降「内部名」として扱われ、2バイト文字やスペースなどはエンコードされ、判別しにくくなってしまうからです(本記事後半に例があります)。

ということで列名をわかりやすい日本語の名前に変更します。

列を選択し、[サイト列の設定の編集]をクリック。右に表示される「サイト列の設定の編集」画面最下部の「従来の環境」をクリックします。

列名を変更し、[OK]で保存しましょう。

列の設定変更はそれを利用するすべてのリスト・ライブラリに影響を及ぼします。
その旨の警告が表示されるので、[OK]で応答しましょう。

テナントのコンテンツタイプは変更を施した際に「公開」の操作を行う必要があります。
これを行わないと各サイトからの参照が行えません。

コンテンツタイプの設定ページで[公開]をクリックします。

更に[保存]をクリックすると公開が行われます。

以上でテナント側の操作は完了です。

サイトのライブラリにコンテンツタイプを追加する

続いて作成したコンテンツタイプをライブラリに紐づけしていきます。

対象のライブラリの設定ページを開き、コンテンツタイプセクションの「既存のサイト コンテンツ タイプから追加」をクリックします。

「サイト コンテンツ タイプの参照元」で作成したコンテンツタイプのカテゴリ(今回は「カスタム コンテンツ タイプ」という名前を付けました)を選択します。

すると作成したコンテンツタイプが表示されるはずです。
これを選択し、[追加]をクリックします。

追加ができましたら[OK]で保存しましょう。

ライブラリにコンテンツタイプが登録されました。

新規ボタンの表示を解除する

コンテンツタイプを登録すると、それでアイテムを登録するための「新規」ボタンが登録されます。

今回はテナントのサイト列を既存のコンテンツタイプに追加するだけの目的のため、「新規」に表示させておく必要がありません。

ということで、「新規」への表示を解除しておきます。

ライブラリの設定ページを開き、コンテンツタイプセクションの「新規ボタンの順序と既定のコンテンツ タイプの変更」をクリックします。

新規に登録したコンテンツタイプ(今回は「ドキュメント(カテゴリメンテ用)」という名前を付けました)の「表示」チェックを外し、[OK]で保存します。

この設定で余計な新規コマンドが表示されなくなります。

既存コンテンツタイプにテナントのサイト列を追加する

ここまでの設定で、サイトにサイト列が追加されています。しかし、新規に登録したコンテンツタイプでしか使えない状況です。

ということで、実際に利用する既存のコンテンツタイプでも列が使えるよう追加していきます。

ライブラリの設定ページを開き、コンテンツタイプセクションの対象の既存コンテンツタイプ名(今回は「サイトページ」を対象とします)をクリックします。

列セクションの「サイト内またはリスト内の既存の列から追加」をクリックします。

列の選択元「列リスト」にテナントで作成したサイト列が表示されますので、選択して[追加]、更に[OK]で保存しましょう。

設定したコンテンツタイプが列の使用場所として追加されました。

以上で、列の追加設定は完了です。

お疲れさまでした!

登録したサイト列の使用例

では、登録したサイト列を実際に使ってみましょう。

ビューに表示する

ビューで使うには「+列の追加」の「列の表示/非表示」から追加していきます。

追加したサイト列(今回は「テナントドキュメントカテゴリ」という名前を付けています)にチェックを付け、[適用]で保存です。

ビューに列が追加されました。

列の値を入力する

列が追加されるとドキュメントやページのプロパティ画面で値の入力ができるようになります。

ページの場合、ページを編集モードにして「ページの詳細」をクリックすると、こんな具合で列の値を入力できます。

管理プロパティーでコンテンツをフィルターする

ドキュメントライブラリWEBパーツやニュースWEBパーツなどにおいては管理プロパティでコンテンツのフィルターを行うことが可能です。

サイト列を作成すると列の内部名から自動的に管理プロパティが生成されます。

しかも、テナントのサイト列の場合は、複数のサイトで共通利用が可能な管理プロパティとなるので、サイトをまたがるフィルターを1つの管理プロパティで操るといったことが実現可能です。

ニュースWEBパーツは「ページのプロパティ」という項目でサイト列でのフィルターが可能ですが、これは単一サイトにしか対応しません

複数サイトを横断してコンテンツの抽出を行うには、テナントにサイト列を作成してそれを複数サイトに設置するのが有効です。

テナントのサイト列を更新する

最後に列の更新についてです。

更新を行うにはテナントのコンテンツタイプを編集します。
手順はサイト列の名前を変更した際と同様です。

今回は列の選択肢の項目を1つ増やしてみます。

列の編集が終わったら、コンテンツタイプの公開を行います。

[公開]をクリックし、「再発行」を選択した上で[保存]です。

続いてサイト側の設定です。

サイトの設定を開き、「サイト コンテンツ タイプ」をクリックします。

対象のコンテンツタイプ名をクリックします。

画面上部の[更新]をクリックします。

これでサイトへの公開は完了です。
確認してみましょう。

追加した選択肢が追加されてますね。

更新処理をコマンドで実行する

テナントのサイト列を多くのサイトに展開している場合、この更新処理は面倒ですよね。

更新処理はPowerShellコマンドで一括適用することが可能です。

Add-PnPContentTypesFromContentTypeHub -ContentTypes "<コンテンツタイプのID>" -Site "https://<tenant>.sharepoint.com/sites/aaaaa","https://<tenant>.sharepoint.com/sites/bbbbb"

<コンテンツタイプのID>はテナントのコンテンツタイプページにて確認できます。

SharePoint管理者且つサイトの管理者権限があるアカウントで実行しましょう。

まとめ

いかがでしたでしょうか。

初回の設定はなかなか面倒ではありますが、以降の更新作業はコマンドを利用できるため、多くのサイトで共通の列を管理されている方には有用な方法だと考えます。

コメント

タイトルとURLをコピーしました