鍋綿ブログ

C#・SharePoint・SharePoint Framework・Office365を中心に扱うブログです。

SharePointの用語セットをサイトコレクションに持つ方法

 SharePointに「用語セット」を追加する際、新しい用語をサイトコレクション内でのみ利用可能なものにしたい場合には、↓の画像のように用語セットをサイトコレクションの用語グループ内に追加する必要があります。

 

f:id:micknabewata:20201204113752p:plain

用語セットの作成

 サイトコレクションの用語グループの名前は「サイトコレクション - {サイトURL}」となっていますが、この用語グループが見当たらないサイトが散見されます。手で消したわけでもないのに何故・・?

 

f:id:micknabewata:20201204114529p:plain

サイトコレクションの用語グループが無いサイト

 さて困りました。サイトコレクションの用語グループはこの画面では作成できません。新しく作成した用語グループはテナント全体の用語グループになります。

 

f:id:micknabewata:20201204114914p:plain

画面から作成した用語グループはテナント全体に共有される

 色々検討した結果、余計な機能をONにせずサイトコレクションの用語グループを作成する一番簡単な方法はPnPプロビジョニングテンプレートを利用することでした。

 

 まず、以下のようにTermGroupのみを記述したxmlファイルを作成します。例としてtemplate.xmlという名前で作成したとします。

<?xml version="1.0"?>
<pnp:Provisioning xmlns:pnp="http://schemas.dev.office.com/PnP/2020/02/ProvisioningSchema">
  <pnp:Preferences Generator="OfficeDevPnP.Core, Version=3.25.2009.1, Culture=neutral, PublicKeyToken=5e633289e95c321a" />
  <pnp:Templates ID="CONTAINER-TEMPLATE-7F6D99173E8C406E843CE0F2F416FA64">
    <pnp:ProvisioningTemplate ID="TEMPLATE-7F6D99173E8C406E843CE0F2F416FA64" Version="1" BaseSiteTemplate="SITEPAGEPUBLISHING#0" Scope="RootSite">
      <pnp:TermGroups>
        <pnp:TermGroup Name="{sitecollectiontermgroupname}" ID="00000000-0000-0000-0000-000000000000" Description=" " SiteCollectionTermGroup="true" UpdateBehavior="Overwrite">
          <pnp:TermSets>
          </pnp:TermSets>
        </pnp:TermGroup>
      </pnp:TermGroups>
    </pnp:ProvisioningTemplate>
  </pnp:Templates>
</pnp:Provisioning>

 

 次にPowerShellを起動してtemplate.xmlファイルを保存したディレクトリへ移動しておき、次のコマンドを実行します。PnP PowerShellがインストールされていることが前提です。

 

$siteUrl="https://contoso.com/sites/sample"
$template="template.xml"

Connect-PnPOnline -Url $siteUrl -UseWebLogin
Apply-PnPProvisioningTemplate -Path $template

 

 $siteUrlと$templateはご自身の環境に合わせて書き換えてください。