SharePoint サイト テンプレートとサイト スクリプトの概要

注意

  • サイト テンプレートとサイト スクリプトは、現在、SharePoint Online でのみサポートされています。
  • 以前のバージョンの SharePoint ではサイト テンプレートはサイト デザインと呼ばれていましたが、今後はサイト テンプレートと呼ばれます。
  • SharePoint には、サイトの作成を許可されたすべての SharePoint ユーザーが利用できる新しいサイト テンプレート エクスペリエンスがあります。新しいサイト テンプレート エクスペリエンスの詳細をご覧ください
  • 現在、サイト テンプレート エクスペリエンスを無効にすることはできません。
  • 組織によって作成され、既定のテンプレートとして設定されたサイト テンプレートは、新しいサイトが作成されたときに自動的に適用されますが、サイト所有者は [設定][サイト テンプレートの適用] の順に選択して更新できます。
  • サイト テンプレートのバージョン履歴は現在、新しいサイト テンプレート エクスペリエンスでは利用できませんが、将来のイテレーションに含まれる予定です。

サイト テンプレートとサイト スクリプトを使用し、独自のカスタム構成を使用して新規または既存のモダン SharePoint サイトのプロビジョニングを自動化します。

組織内の人員が新しい SharePoint サイトを作成する場合、一定のレベルの一貫性を確保しなければならない場合があります。 たとえば、新しいサイトごとに適切なブランドとテーマを適用する必要があります。 PnP プロビジョニング エンジンの使用など、新しいサイトが作成されるたびに適用する必要がある、詳細なサイト プロビジョニング スクリプトを作成することもできます。

この記事では、サイト テンプレートとサイト スクリプトを使用して、新しいサイトを作成したときに適用するカスタム構成を提供する方法について説明します。

サイト テンプレートのしくみ

新しいサイトを作成するたびにサイト テンプレートを使用して、一貫性のある一連のアクションを適用することができます。 また、既存のモダン サイト (グループに接続されたチームおよびコミュニケーション サイト) に適用することもできます。 通常、ほとんどのアクションは、テーマの設定やリストの作成など、そのサイト自体に影響します。 しかし、サイト テンプレートには、新しいサイトの URL をログに記録したり、ツイートを送信したりするなど、他のアクションを含めることもできます。

注意

  • カスタム サイト スクリプトを使用して作成されたサイト テンプレートは、サイト テンプレート ギャラリーの [組織から] タブに表示されます。
  • 組織で作成されたカスタム サイト テンプレートは、ユーザーが選択したサイトの種類 (コミュニケーション サイトまたはチーム サイト) に基づいてサイト テンプレート ギャラリーに表示されます。 そのため、サイト テンプレート ギャラリーに組織のすべてのサイト テンプレートが表示されない可能性があります。 近日中に、選択したサイトの種類にかかわらず、ユーザーは組織が提供するすべてのサイト テンプレートを閲覧できるようになります。

サイト テンプレートを作成し、SharePoint でそれらをモダン テンプレート サイトの 1 つ、つまりチーム サイトまたはコミュニケーション サイトに登録します。次の手順で、このしくみを確認できます。

  1. 開発者テナントで SharePoint の開始ページに進みます。

  2. [サイトの作成] を選択します。

    2 つのモダン テンプレート サイトである チーム サイトコミュニケーション サイト が表示されます。

  3. 必要なサイトの種類を選択します。

  • SharePoint で トピック サイト テンプレートを使用して通信サイトが自動的に作成されます。
  • 既定のチーム サイトを選択した場合、SharePoint では チーム コラボレーション テンプレートを使用して新しいサイトが作成されます。

既定のサイト テンプレートの変更方法の詳細については、「既定のサイト テンプレートのカスタマイズ」を参照してください。

  1. [設定] アイコンに移動し、[サイト テンプレートの適用] を選択して、手順 3 で選択したサイトの種類に基づいて Microsoft が提供するサイト テンプレートを確認します。

サイト テンプレートを選択すると、SharePoint は新しいサイトを作成し、サイト テンプレートのサイト スクリプトを実行します。 サイト スクリプトでは、新しいリストの作成やテーマの適用など、テンプレートの詳細を指定します。 これらのスクリプト アクションは、バックグラウンドで実行されます。 スクリプトが完了すると、ページが更新し、サイト スクリプトの詳細が表示されます。

注意

サイト テンプレートは、以前に作成したモダン サイト コレクションに適用できるようになりました。 詳細については、「REST API」 と 「PowerShell」の記事を参照してください。

サイト スクリプトの構造

サイト スクリプトは、新しいサイトを作成するときに実行するアクションの番号付きリストを指定した JSON ファイルです。アクションは、リストされている順序で実行されます。

最上位レベルの 2 つのアクションを含むスクリプトの例を以下に示します。 最初に、「Contoso Explorers」という名前で以前に作成されたテーマを適用します。 次に、顧客追跡 リストを作成します。

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/site-design-script-actions.schema.json",
  "actions": [
    {
      "verb": "applyTheme",
      "themeName": "Contoso Explorers"
    },
    {
      "verb": "createSPList",
      "listName": "Customer Tracking",
      "templateType": 100,
      "subactions": [
        {
          "verb": "setDescription",
          "description": "List of Customers and Orders"
        },
        {
          "verb": "addSPField",
          "fieldType": "Text",
          "displayName": "Customer Name",
          "isRequired": false,
          "addToDefaultView": true
        },
        {
          "verb": "addSPField",
          "fieldType": "Number",
          "displayName": "Requisition Total",
          "addToDefaultView": true,
          "isRequired": true
        },
        {
          "verb": "addSPField",
           "fieldType": "User",
          "displayName": "Contact",
          "addToDefaultView": true,
          "isRequired": true
        },
        {
          "verb": "addSPField",
          "fieldType": "Note",
          "displayName": "Meeting Notes",
          "isRequired": false
        }
      ]
    }
  ],
  "version": 1
}

サイト スクリプトの各アクションは、JSON で 動詞 の値で指定されます。 前述のスクリプトでは、最初のアクションは applyTheme 動詞で指定されます。 次に、createSPList 動詞でリストを作成します。 createSPList 動詞には、リストだけに追加のアクションを実行する独自の動詞セットが含まれています。

使用可能なアクションは次のとおりです:

  • 新しいリストまたはライブラリの作成 (またはサイトで作成された既定の変更)
  • サイト列の作成、コンテンツ タイプ、およびその他のリスト設定の構成
  • ナビゲーション レイアウト、ヘッダー レイアウト、ヘッダーの背景などのサイトのブランドのプロパティを設定する
  • テーマの適用**
  • サイト ロゴの設定
  • クイック起動またはハブ ナビゲーションにリンクを追加する**
  • Power Automate フローのトリガー
  • アプリ カタログから展開されたソリューションのインストール
  • サイトの地域設定の設定**
  • SharePoint の役割にプリンシパル (ユーザーとグループ) を追加する**
  • サイトの外部の共有機能の設定**

使用可能なアクションとそのパラメーターの完全な一覧については、「JSON スキーマ」を参照してください。

注意

  • ** でマークされたアクションは、チャネル サイトに対して自動的にブロックされます。
  • ライブラリおよびリストの場合は、PowerShell コマンド [Get-SPOSiteScriptFromList] を使用して、既存の SharePoint リストからサイト スクリプト構文を作成します。

サイト スクリプトは、プロビジョニング後に同じサイトで再度実行できます。 サイト スクリプトは破壊的ではないため、再度実行された場合でも、サイトはスクリプト内の設定と一致することが保証されます。

たとえば、サイト スクリプトが作成しているのと同じ名前のリストがサイトに既に存在する場合、サイト スクリプトは不足しているフィールドのみを既存のリストに追加します。

サイト スクリプト アクションの数の上限は以前に 30 に制限されました。Invoke-SPOSiteDesign コマンドを使用してスクリプトを同期的に適用する場合は引き続きこの上限が適用されますが、お客様からのフィードバックと追加のアクションのサポートに基づき、UI または Add-SPOSiteDesignTask コマンドを使用してスクリプトを非同期的に適用する場合のアクション数の上限は 300 (または100,000 文字) に引き上げられました。

また、サイト スクリプト数の上限は 100、1 テナントあたりのサイト テンプレート数の上限は 100 に制限されています。

PowerShell または REST を使用したサイト テンプレートとサイト スクリプトの操作

PowerShell または REST API を使用して、サイト テンプレートとサイト スクリプトを作成できます。 次の例では、サイト スクリプトと、サイト スクリプトを使用するサイト テンプレートを作成します。

C:\> Get-Content 'c:\scripts\site-script.json' `
     -Raw | `
     Add-SPOSiteScript `
    -Title "Contoso theme and list"

Id          : 2756067f-d818-4933-a514-2a2b2c50fb06
Title       : Contoso theme and list
Description :
Content     :
Version     : 0

C:\> Add-SPOSiteDesign `
  -Title "Contoso customer tracking" `
  -WebTemplate "64" `
  -SiteScripts "2756067f-d818-4933-a514-2a2b2c50fb06" `
  -Description "Creates customer list and applies standard theme"

前の例では、Add-SPOSiteScript コマンドレットまたは CreateSiteScript REST API はサイト スクリプト ID を返します。これは、それ以降の Add-SPO-SiteDesign コマンドレットまたは CreateSiteDesign REST API の呼び出しで SiteScripts パラメーターに使用されます。

パラメーター サイト テンプレートの種類
WebTemplate 64 チーム サイト テンプレート
WebTemplate 1 1 チーム サイト (グループの作成は無効)
WebTemplate 68 コミュニケーション サイトのテンプレート
WebTemplate 69 チャネル サイト テンプレート

サイト テンプレートを作成する一つ一つの手順の内容については、「サイト テンプレートの作成を開始する」を参照してください。

注意

  • サイト テンプレートは複数のスクリプトを実行できます。スクリプト ID が配列に渡され、リストされている順序で実行されます。
  • サイト テンプレートの以前の用語は、特定のコマンドレット ラベルとスクリプト ラベルに "サイトデザイン" として表示される場合があります。

Power Automate を使用した PnP プロビジョニングおよびカスタマイズ

サイト スクリプトによって提供される 1 つのアクションは、Power Automate フローをトリガーする機能です。 これにより、サイト スクリプトでネイティブに提供されるアクション以外に、必要なカスタム アクションを指定することができます。

PnP プロビジョニング エンジンを使用してサイト作成を自動化する場合は、Power Automate フローを使用してサイト テンプレートと統合できます。 この手法を使用して、既存のプロビジョニング スクリプトをすべて維持しながら、新しいカスタム プロビジョニング スクリプトを作成することができます。


Microsoft Flow のトリガー プロセス

プロセスは次のように動作します。

  1. このスクリプトは、URL を使用して Power Automate フローを追加の詳細とともにインスタンス化します。

  2. このフローは、ユーザーが構成した Azure ストレージ キューにメッセージを送信します。

  3. このメッセージは、ユーザーが構成した Azure 関数の呼び出しをトリガーします。

  4. Azure 関数は、PnP プロビジョニング エンジンなどのカスタム スクリプトを実行して、カスタム構成を適用します。

PnP プロビジョニングを使用して独自の Power Automate フローを構成する方法のステップごとのチュートリアルについては、「PnP プロビジョニング エンジンを使用して完全なサイト テンプレートを作成する」を参照してください。

スコープ

組織内の特定のグループまたは人員にのみ表示するサイト テンプレートを構成できます。 これにより、対象となる人々だけがそのサイト テンプレートを見ることができるようになります。 たとえば、会計部門には、会計部門用の特別なサイト テンプレートのみを表示することができます。 会計部門以外の人にとって、会計のサイト テンプレートは重要度が低い可能性があります。

既定では、作成時にすべてのユーザーがそのサイト テンプレートを表示できます。 スコープは、Grant-SPOSiteDesignRights コマンドレットまたは GrantSiteDesignRights REST API を使用して適用されます。 ユーザーごとに、またはメールが有効なセキュリティ グループで、スコープを指定することができます。

Nestor (架空の Contoso サイトに所属するユーザー) のサイト テンプレートに対する表示権限を追加する方法の例を次に示します。

Grant-SPOSiteDesignRights `
  -Identity 44252d09-62c4-4913-9eb0-a2a8b8d7f863 `
  -Principals "nestorw@onmicrosoft.com" `
  -Rights View

スコープの処理方法の詳細については、「サイト テンプレートへのアクセスのスコープ」を参照してください。

関連項目