PnP Office Open XML ファイル形式 (.pnp)

(<pnp:Files /> 要素を介して) ファイル参照を含むテンプレートがある場合、xml ファイル参照されるファイルの両方を配布する必要があります。 もちろんこれは機能しますが、ファイルを別の場所にコピーするときに非常に簡単にファイルを見逃すことになります。

注:

PnP プロビジョニング フレームワーク & PnP プロビジョニング エンジンは、アクティブなコミュニティがサポートを提供するオープン ソース ソリューションです。 Microsoft からのオープン ソース ツールのサポート SLA はありません。

このため、「pnp ファイル」と呼ばれる特定の Office Open XML 形式を導入しました。 実際には、特定の構造を持つ zip ファイルです。 .pnp ファイルの名前を .zip 拡張子に変更すると、ファイルを開いて確認するだけで済みます。

PnP ファイルの内容

ファイル

zip 形式のフォルダーでファイル フォルダーを開くと、多くの奇妙なファイル名が表示され、これらはすべて GUID (グローバル一意識別子) に基づいています

ファイル フォルダーの内容

テンプレート自体はこのリストにあり、拡張子は .xml です。 表示されるその他のファイルは、実際には XML テンプレートで参照するファイルです。

すべてのファイルの名前は、一意のファイル名に変更されています。 これは、Office Open XML ファイル形式ではこの構造のサブフォルダーが許可されていないためですが、テンプレートで 2 つの異なるファイルが参照され、それぞれが同じファイル名を持っている場合はどうなりますか? 共有ドキュメント ライブラリに移動する project.docx というファイルがあり、プロジェクト ドキュメント ライブラリに移動する別の project.docx ファイルがあるとしましょう。 このため、ファイル名を一意のファイル名に変更します。

テンプレートを適用するとき、参照テーブルを使用して実際のファイル名を見つけます。 その参照テーブルは ProvisioningTemplate フォルダーにあり、files-map.xml と呼ばれます。

これはそのファイルの内容の例です。

<PnPFilesMap xmlns="clr-namespace:OfficeDevPnP.Core.Framework.Provisioning.Connectors.OpenXML.Model;assembly=OfficeDevPnP.Core" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <PnPFilesMap.Map>
    <x:String x:Key="19cd09af-97a4-4015-ab9e-22451180702a.xml">theperspective.xml</x:String>
    <x:String x:Key="cce8b9eb-73d2-4f72-8f42-2c6eb08e1566.png">assets/__sitelogo___sitelogo_theperspective.png</x:String>
    <x:String x:Key="e4d4df2d-dab9-48e6-ab9e-8791d8bd8a86.pdf">assets/documents/Contoso Falcon.pdf</x:String>
    <x:String x:Key="c364ce2a-05f0-4cfa-b916-9476004757ba.pdf">assets/documents/Contoso Flex.pdf</x:String>
    <x:String x:Key="d06ca829-8e74-42e6-92b7-426899e82243.pdf">assets/documents/Contoso Mark8 Controller.pdf</x:String>
    <x:String x:Key="670ef91a-18b1-4869-9ca2-fc573e6eca2f.pdf">assets/documents/Contoso Mark8.pdf</x:String>
    <x:String x:Key="b90f3fd6-933f-4c55-a267-298be21c9d32.pdf">assets/documents/Contoso Quad.pdf</x:String>
    <x:String x:Key="35667dfc-1a0c-4322-8980-43c58dd6ea70.png">assets/SitePages/2019-sales-leadership-award/sales-leadership-award.png</x:String>
    <x:String x:Key="5c886067-3fd3-48bc-974e-75e7fc3aece0.jpeg">assets/SitePages/Contoso-called-on-drone-pilots-to/AdobeStock_145027729.jpeg</x:String>
    <x:String x:Key="eeebf271-8661-4429-91f8-a3798b278900.jpg">assets/SitePages/Contoso-partners-with-non-profit-to-deliver-life-saving-supplies/7719-larm-rmah-216854-unsplash.jpg</x:String>
    <x:String x:Key="48596918-fcbc-4d48-a0a9-ed966a4d1d65.jpg">assets/SitePages/Miriam-Graham--Contoso-s-new-Chief-Marketing-Officer/CLO17_azure_004.jpg</x:String>
    <x:String x:Key="ceb43a63-37e5-4730-aad0-58fb5c3ea711.jpg">assets/SitePages/One-million-drones-sold-in-2018/kevin-chow-176761-unsplash.jpg</x:String>
    <x:String x:Key="936af989-985e-4f2a-9f16-39da9c2e8dea.jpg">assets/SitePages/One-million-drones-sold-in-2018/white-drone-hovering-in-a-bright-blue-sky-PFV2XG7.jpg</x:String>
    <x:String x:Key="e79b754e-c9f3-44a0-ae57-00119f326cf7.jpeg">assets/SitePages/Our-commitment-to-sustainability/AdobeStock_83900723.jpeg</x:String>
    <x:String x:Key="1fca3e50-1d69-4bd1-87db-d3363803b6c8.jpg">assets/SitePages/Patti-announces-flagship-store-opening/contoso-storefront.jpg</x:String>
    <x:String x:Key="63767808-1e11-40f8-956e-475d98e8a9f4.jpeg">assets/SitePages/Pushing-the-Boundaries-on-Aerial-Inspection/AdobeStock_137739028.jpeg</x:String>
    <x:String x:Key="d38d36c8-3fff-49aa-8cf2-c6b0a3efcdab.jpg">assets/SitePages/Singapore-building-update--August-2019/12891-artist_rendering.jpg</x:String>
    <x:String x:Key="229a203c-64cb-463c-b6ff-5c3e8c6fa631.jpeg">assets/SitePages/The-future-of-air-traffic--safely-sharing-the-skies-with-drones/AdobeStock_132294759.jpeg</x:String>
    <x:String x:Key="979f54ef-cb91-4c49-97b0-4d93e62c1ab2.png">assets/SitePages/The-importance-of-branding-at-Contoso/SBLB-BRANDING.png</x:String>
    <x:String x:Key="a6e4fc79-27c5-4f66-b540-fcb4ce1783c9.jpg">assets/SitePages/ThePerspective/23363-showcase.jpg</x:String>
    <x:String x:Key="4bde9cf8-20c0-41a2-a28a-32d502d1e030.jpg">assets/SitePages/ThePerspective/27137-consumer-showcase-thumb-1.jpg</x:String>
    <x:String x:Key="8561942b-8c11-4b30-afca-0bfd3a8a4c45.jpg">assets/SitePages/ThePerspective/33318-consumer-showcase-thumb-2.jpg</x:String>
    <x:String x:Key="c60d109a-21ad-4d3e-b9b4-d92168a463e8.jpg">assets/SitePages/ThePerspective/1548836252flysafe-thumb.jpg</x:String>
    <x:String x:Key="a553db37-a27f-48a1-8c25-72e3fd6479b3.jpeg">assets/SitePages/ThePerspective/AdobeStock_109868254.jpeg</x:String>
    <x:String x:Key="cfd7e6e5-0c92-4f61-8713-ae6942e9d1c6.jpeg">assets/SitePages/ThePerspective/AdobeStock_132294759.jpeg</x:String>
    <x:String x:Key="659ca9d3-081c-46c7-b0e5-23bb6e8bfaf9.jpg">assets/SitePages/ThePerspective/cta-banner.jpg</x:String>
    <x:String x:Key="abcc211e-18fc-4864-9c06-724b47164102.jpg">assets/SitePages/ThePerspective/nasa-_SFJhRPzJHs-unsplash.jpg</x:String>
    <x:String x:Key="ca166bc3-c2ec-44bf-8933-2a688d8702d2.png">assets/SitePages/Why-simplicity-matters/poster-patti-quote.png</x:String>
  </PnPFilesMap.Map>
</PnPFilesMap>

Files フォルダ内で見つかったすべてのファイルについて、files-map.xml ファイル内に一致するエントリがあることがわかります。

手動編集

基本的に zip ファイルをフォルダーに解凍してファイルの更新、ファイルの追加、files-map.xml ファイルの変更を行い、.pnp ファイルを手動で編集できますが、PnP PowerShell を使用することをお勧めします。

PnP ファイルの作成

PnP ファイルを作成する最も簡単な方法は、サイトからテンプレートを抽出し、.pnp 拡張子を指定することです。 コマンドレットは次のように機能します。

Connect-PnPOnline -Url https://yourtenant.sharepoint.com/sites/yoursite
Get-PnPSiteTemplate -Out myfile.pnp

注:

PnP PowerShell はオープン ソース ソリューションであり、アクティブなコミュニティでサポートが提供されています。 Microsoft からのオープン ソース ツールのサポート SLA はありません。

ただし、テンプレートを簡単に変更することはできません。 より良い方法は次のとおりです。

  1. 構成ファイルを作成し、少なくとも persistAssetFiles プロパティを true に設定します。オプションで、SiteAssets、共有ドキュメント、WebSettings (ロゴなど) のようなライブラリーの抽出を指定します。
  2. ファイル システムに新しいフォルダーを作成し、PowerShell でそのフォルダーに移動します。
  3. テンプレートを XML ファイルとして抽出し、構成ファイルを提供します。
    Connect-PnPOnline -Url https://yourtenant.sharepoint.com/sites/yoursite
    Get-PnPSiteTemplate -Out myfile.xml -Configuration ./yourconfiguration.json
    
  4. フォルダー内に 1 つ以上の追加フォルダーが作成されていることがわかります。 これらには実際のファイルが含まれています。 XML ファイルを開くと、そのファイルを指している <pnp:File /> 要素がわかります。
  5. テンプレートをメモリ内オブジェクトに読み込み、PnP ファイルとして保存します。
    $template = Read-PnPSiteTemplate -Path myfile.xml
    Save-PnPSiteTemplate -Out myfile.pnp -Template $template
    

注:

PnP PowerShell を使用してテナント テンプレートを保存し、Read-PnPSiteTemplateRead-PnPTenantTemplate に置き換え、Save-PnPSiteTemplateSave-PnPTenantTemplate に置き換えることもできます。 テナント テンプレートの詳細については、「テナント テンプレートの PnP プロビジョニング」を参照してください。

関連項目