移行 API を使用して Web パーツを移行する

移行 API では、CSOM/REST/SOAP WS を呼び出して Web パーツのデータとプロパティを取得して PRIME パッケージをビルドすることで、PRIME パッケージを使用して Web パーツを SharePoint Online に移行する機能がサポートされています。

Web パーツの移行に Migration API を使用する利点は、Web パーツを 1 回の呼び出しで移行し、パフォーマンスを向上できることです。 マニフェストの一部には、関連付けられているページをインポートするときに Web パーツが含まれます。 Migration API を使用すると、そのページにあるすべての Web パーツを配置できます。

シリアライザー DLL の使用

WebPart ユーザー プロパティ シリアライザー DLL を使用する必要がある一意の方法で処理される属性は 2 つあります。

PRIME パッケージをビルドするときに 、AllUsersPropertiesPerUserProperties の プロパティ値を生成する技術的な課題があります。 この課題は、プロパティ値が BASE64 でエンコードされた BLOB であり、Web パーツのプロパティと Web パーツの接続情報がシリアル化されるためです。

シリアライザー .dll を取得するには、次の手順に従います。

  1. ローカル コンピューターに SPMT クライアントをインストールする: SPMT をインストールします。
  2. SPMT のインストール場所を参照します
  3. microsoft.sharepoint.migration.webpart.serializer.dll を見つけてコピーすると、プロジェクトにコピーできます。

サポートされている Web パーツの完全な一覧については、次を参照してください。

スキーマ:

SPWebPart フィールドの説明については、次を参照してください。

PRIME Web パーツ スキーマの例

<!-- SPFile definition -->
<xs:complexType name="SPFile">
  <xs:sequence>
    <xs:element name="Properties" type="Dictionary" minOccurs="0" />
    <xs:element name="Versions" type="SPFileVersionCollection" minOccurs="0" maxOccurs="1" />
    <xs:element name="WebParts" type="SPWebPartCollection" minOccurs="0" maxOccurs="1" />
    <xs:element name="Links" type="SPLinkCollection" minOccurs="0" maxOccurs="1" />
    <xs:element name="EventReceivers" type="SPEventReceiverDefinitionCollection" minOccurs="0" maxOccurs="1" />
    <xs:element name="VersionEvents" type="SPFileVersionEventCollection" minOccurs="0" maxOccurs="1" />
  </xs:sequence>
……
</xs:complexType>

<!-- SPWebPartCollection definition -->
<xs:complexType name="SPWebPartCollection">
  <xs:sequence>
    <xs:element name="WebPart" type="SPWebPart" minOccurs="1" maxOccurs="unbounded" />
  </xs:sequence>
</xs:complexType>

<!-- SPWebPart definition -->
<xs:complexType name="SPWebPart">
  <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="35">
      <xs:element name="Script" minOccurs="0" maxOccurs="1" />
      <xs:element name="PagedRowset" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="PagedClientCallbackRowset" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="PagedRecurrenceRowset" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="ViewFields" type="SPFieldLinkCollection" minOccurs="0" maxOccurs="1" />
      <xs:element name="ViewData" minOccurs="0" maxOccurs="1" />
      <xs:element name="Query" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="RowLimit" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="RowLimitExceeded" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="Toolbar" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="Formats" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="Aggregations" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="List" minOccurs="0" maxOccurs="1" />
      <xs:element name="MetaData" minOccurs="0" maxOccurs="1" />
      <xs:element name="View" minOccurs="0" maxOccurs="1" />
      <xs:element name="ViewStyle" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="ViewBody" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="ViewEmpty" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="ViewFooter" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="ViewHeader" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="ViewBidiHeader" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="GroupByFooter" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="GroupByHeader" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="CalendarViewStyles" minOccurs="0" maxOccurs="1" />
      <xs:element name="CalendarSettings" minOccurs="0" maxOccurs="1" />
      <xs:element name="ListFormBody" minOccurs="0" maxOccurs="1" />
      <xs:element name="Xsl" minOccurs="0" maxOccurs="1" />
      <xs:element name="XslLink" minOccurs="0" maxOccurs="1" />
      <xs:element name="JS" minOccurs="0" maxOccurs="1" />
      <xs:element name="JSLink" minOccurs="0" maxOccurs="1" />
      <xs:element name="ParameterBindings" minOccurs="0" maxOccurs="1" />
      <xs:element name="OpenApplicationExtension" minOccurs="0" maxOccurs="1" />
      <xs:element name="Mobile" minOccurs="0" maxOccurs="1" />
      <xs:element name="MobileItemLimit" minOccurs="0" maxOccurs="1" />
      <xs:element name="Method" minOccurs="0" maxOccurs="1" />
      <xs:element name="WebParts" minOccurs="0" maxOccurs="1" />
      <xs:element name="InlineEdit" minOccurs="0" maxOccurs="1" />
      <xs:element name="Joins" minOccurs="0" maxOccurs="1" />
      <xs:element name="ProjectedFields" minOccurs="0" maxOccurs="1" />
      <xs:element name="SpotlightInfo" minOccurs="0" maxOccurs="1" />
      <xs:element name="Visualization" minOccurs="0" maxOccurs="unbounded" />
    </xs:choice>
  </xs:sequence>

  <xs:attribute name="Name" type="Guid" use="required" />
  <xs:attribute name="ListId" type="Guid" use="optional" />
  <xs:attribute name="ListRootFolderUrl" type="xs:string" use="optional" />
  <xs:attribute name="Type" type="xs:string" use="optional" />
  <xs:attribute name="UserId" type="xs:int" use="optional" />
  <xs:attribute name="DisplayName" type="xs:string" use="optional" />
  <xs:attribute name="WebPartTypeId" type="Guid" use="optional" />
  <xs:attribute name="Assembly" type="xs:string" use="optional" />
  <xs:attribute name="Class" type="xs:string" use="optional" />
  <xs:attribute name="SolutionId" type="Guid" use="optional" />
  <xs:attribute name="Version" type="xs:string" use="optional" />
  <xs:attribute name="BaseViewID" type="xs:string" use="optional" />
  <xs:attribute name="WebPartZoneID" type="xs:string" use="optional" />
  <xs:attribute name="IsIncluded" type="xs:string" use="optional" />
  <xs:attribute name="WebPartOrder" type="xs:string" use="optional" />
  <xs:attribute name="FrameState" type="xs:string" use="optional" />
  <xs:attribute name="Source" type="xs:string" use="optional" />
  <xs:attribute name="AllUsersProperties" type="xs:string" use="optional" />
  <xs:attribute name="PerUserProperties" type="xs:string" use="optional" />
  <xs:attribute name="WebPartIdProperty" type="xs:string" use="optional" />
  <xs:attribute name="ContentTypeId" type="xs:string" use="optional" />

  <!-- For files (major [default] or minor) -->
  <xs:attribute name="Level" type="xs:string" use="optional" />

  <!-- Flags -->
  <xs:attribute name="Flags" type="xs:string" use="optional" />
  <xs:attribute name="Scope" type="xs:string" use="optional" />
  <xs:attribute name="Hidden" type="xs:boolean" use="optional" />
  <xs:attribute name="Threaded" type="xs:boolean" use="optional" />
  <xs:attribute name="ReadOnly" type="xs:boolean" use="optional" />
  <xs:attribute name="RecurrenceRowset" type="xs:boolean" use="optional" />
  <xs:attribute name="FPModified" type="xs:boolean" use="optional" />
  <xs:attribute name="ModerationType" type="xs:string" use="optional" />
  <xs:attribute name="Personal" type="xs:boolean" use="optional" />
  <xs:attribute name="OrderedView" type="xs:boolean" use="optional" />
</xs:complexType>

セキュリティ コントロール

サーバー側のセキュリティ制御設計により、次の動作が行われます。

  • NoScript がオフの場合は、現在のすべての Web パーツの移行に進みます
  • NoScript がオンの場合は、最初に Web パーツ レベルの安全性をチェックします
    • SafeAgainstScript が false の場合は、インポートしないでください
    • SafeAgainstScript が true の場合は、Web パーツのプロパティ レベルの安全性をチェックします
      • Web パーツに 'RequiresDesignerPermission' のプロパティがある場合は、この Web パーツを無視します (可能な場合はこのプロパティを無視します)。
      • それ以外の場合は、この Web パーツの移行に進む

NoScript がオンになっている場合にサーバー側のコード (信頼されていない Web パーツとして扱われる) によって無視される Web パーツの一覧を次に示します。

  • XsltListViewWebPart
  • ContentEditorWebPart
  • ContentByQueryWebPart
  • SiteFeedWebPart
  • ScriptEditorWebPart
  • ContactFieldControl
  • SearchBoxScriptWebPart
  • PageViewerWebPart
  • ProfileBrowser
  • UserTasksWebPart
  • SocialCommentWebPart
  • SilverlightWebPart
  • RSSAggregatorWebPart
  • SummaryLinkWebPart
  • TableOfContentsWebPart
  • UserDocsWebPart
  • SPTimelineWebPart
  • XmlWebPart
  • SiteDocuments
  • CategoryResultsWebPart

FAQ

質問: シリアル化 API の入力として Web パーツのプロパティをフェッチ操作方法。 答え: Web パーツのプロパティは、 <'WebPartPagesWebService> ' の操作 'GetWebPartProperties2' の応答の webpart 要素にあります。 WSDL '/_vti_bin/WebPartPage.asmx でペイロードの詳細を見つけますか?WSDL'。

質問: シリアル化 API の入力として Web パーツ接続情報をフェッチする方法 答え: Web パーツ接続は、Web パーツ ページの <SPWebPartConnection> 要素で、'WebPartPagesWebService' の操作 'GetWebPartPage' の応答で見つけることができます。

ビュー フラグ: すべてのビュー フラグなど、これを参照してください。 すべてのフラグ値を PRIME 要素 'flags' に変換する必要があります。

付録

サンプル Web パーツのプロパティ v2 XmlNode 要素

<WebPart xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/WebPart/v2" ID="1c845edf-42c6-4094-a105-302015642f43">
  <Title>Content Editor</Title>
  <FrameType>Default</FrameType>
  <Description>Allows authors to enter rich text content.</Description>
  <IsIncluded>true</IsIncluded>
  <ZoneID>wpz</ZoneID>
  <PartOrder>0</PartOrder>
  <FrameState>Normal</FrameState>
  <Height />
  <Width />
  <AllowRemove>true</AllowRemove>
  <AllowZoneChange>true</AllowZoneChange>
  <AllowMinimize>true</AllowMinimize>
  <AllowConnect>true</AllowConnect>
  <AllowEdit>true</AllowEdit>
  <AllowHide>true</AllowHide>
  <IsVisible>true</IsVisible>
  <DetailLink />
  <HelpLink />
  <HelpMode>Modeless</HelpMode>
  <Dir>Default</Dir>
  <PartImageSmall />
  <MissingAssembly></MissingAssembly>
  <PartImageLarge>/_layouts/15/images/mscontl.gif</PartImageLarge>
  <IsIncludedFilter />
  <ExportControlledProperties>true</ExportControlledProperties>
  <ConnectionID>00000000-0000-0000-0000-000000000000</ConnectionID>
  <ID>g_d6def51c_7a91_40fe_9f59_de9ceed5c347</ID>
  <Assembly>Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
  <TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName>
  <ContentLink xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor" />
  <Content xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor" />
  <PartStorage xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor" />
</WebPart>

サンプル Web パーツのプロパティ v3 XmlNode 要素

<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
  <metaData>
    <type name="Microsoft.SharePoint.WebPartPages.XsltListViewWebPart, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
    <importErrorMessage></importErrorMessage>
  </metaData>
  <data>
    <properties>
      <property name="ShowWithSampleData" type="bool">False</property>
      <property name="Default" type="string" />
      <property name="NoDefaultStyle" type="string" />
      <property name="CacheXslStorage" type="bool">True</property>
      <property name="ViewContentTypeId" type="string" />
      <property name="XmlDefinitionLink" type="string" />
      <property name="ManualRefresh" type="bool">False</property>
      <property name="ListUrl" type="string" null="true" />
      <property name="ListId" type="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">a316c9a6-e664-426b-9069-77cabd22429c</property>
      <property name="TitleUrl" type="string">/Lists/TestPromotedLinks</property>
      <property name="EnableOriginalValue" type="bool">False</property>
      <property name="Direction" type="direction">NotSet</property>
      <property name="ServerRender" type="bool">False</property>
      <property name=" ViewFlags " type="Microsoft.SharePoint.SPViewFlags, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">Html, TabularView, Hidden, Ordered</property>
      <property name="AllowConnect" type="bool">True</property>
      <property name="ListName" type="string">{A316C9A6-E664-426B-9069-77CABD22429C}</property>
      <property name="ListDisplayName" type="string" null="true" />
      <property name="AllowZoneChange" type="bool">True</property>
      <property name="ChromeState" type="chromestate">Normal</property>
      <property name="DisableSaveAsNewViewButton" type="bool">True</property>
      <property name="ViewFlag" type="string" />
      <property name="DataSourceID" type="string" />
      <property name="ExportMode" type="exportmode">All</property>
      <property name="AutoRefresh" type="bool">False</property>
      <property name="FireInitialRow" type="bool">True</property>
      <property name="AllowEdit" type="bool">True</property>
      <property name="Description" type="string" />
      <property name="HelpMode" type="helpmode">Modeless</property>
      <property name="BaseXsltHashKey" type="string" null="true" />
      <property name="AllowMinimize" type="bool">True</property>
      <property name="CacheXslTimeOut" type="int">86400</property>
      <property name="ChromeType" type="chrometype">Default</property>
      <property name="Xsl" type="string" null="true" />
      <property name="JSLink" type="string" null="true" />
      <property name="CatalogIconImageUrl" type="string">/_layouts/15/images/itgen.png?rev=23</property>
      <property name="SampleData" type="string" null="true" />
      <property name="UseSQLDataSourcePaging" type="bool">True</property>
      <property name="TitleIconImageUrl" type="string" />
      <property name="PageSize" type="int">-1</property>
      <property name="ShowTimelineIfAvailable" type="bool">True</property>
      <property name="Width" type="string" />
      <property name="DataFields" type="string" />
      <property name="Hidden" type="bool">False</property>
      <property name="Title" type="string" />
      <property name="PageType" type="Microsoft.SharePoint.PAGETYPE, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">PAGE_NORMALVIEW</property>
      <property name="DataSourcesString" type="string" />
      <property name="AllowClose" type="bool">True</property>
      <property name="InplaceSearchEnabled" type="bool">False</property>
      <property name="WebId" type="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">00000000-0000-0000-0000-000000000000</property>
      <property name="Height" type="string" />
      <property name="GhostedXslLink" type="string">main.xsl</property>
      <property name="DisableViewSelectorMenu" type="bool">True</property>
      <property name="DisplayName" type="string" />
      <property name="IsClientRender" type="bool">False</property>
      <property name="XmlDefinition" type="string">&lt;View Name="{2B37E456-6FD3-4708-AC83-5D7B0D13E9B4}" Type="HTML" Hidden="TRUE" OrderedView="TRUE" DisplayName="" Url="/SitePages/TestPage.aspx" Level="1" BaseViewID="3" ContentTypeID="0x" &gt;&lt;Query&gt;&lt;OrderBy&gt;&lt;FieldRef Name="TileOrder" Ascending="TRUE"/&gt;&lt;FieldRef Name="Modified" Ascending="FALSE"/&gt;&lt;/OrderBy&gt;&lt;/Query&gt;&lt;ViewFields&gt;&lt;FieldRef Name="Title"/&gt;&lt;FieldRef Name="BackgroundImageLocation"/&gt;&lt;FieldRef Name="Description"/&gt;&lt;FieldRef Name="LinkLocation"/&gt;&lt;FieldRef Name="LaunchBehavior"/&gt;&lt;FieldRef Name="TileOrder"/&gt;&lt;/ViewFields&gt;&lt;RowLimit Paged="TRUE"&gt;30&lt;/RowLimit&gt;&lt;JSLink&gt;clienttemplates.js&lt;/JSLink&gt;&lt;XslLink Default="TRUE"&gt;main.xsl&lt;/XslLink&gt;&lt;Toolbar Type="Standard"/&gt;&lt;/View&gt;</property>
      <property name="InitialAsyncDataFetch" type="bool">False</property>
      <property name="AllowHide" type="bool">True</property>
      <property name="ParameterBindings" type="string">&lt;ParameterBinding Name="dvt_sortdir" Location="Postback;Connection" /&gt;&lt;ParameterBinding Name="dvt_sortfield" Location="Postback;Connection" /&gt;&lt;ParameterBinding Name="dvt_startposition" Location="Postback" DefaultValue="" /&gt;&lt;ParameterBinding Name="dvt_firstrow" Location="Postback;Connection" /&gt;&lt;ParameterBinding Name="OpenMenuKeyAccessible" Location="Resource(wss,OpenMenuKeyAccessible)" /&gt;&lt;ParameterBinding Name="open_menu" Location="Resource(wss,open_menu)" /&gt;&lt;ParameterBinding Name="select_deselect_all" Location="Resource(wss,select_deselect_all)" /&gt;&lt;ParameterBinding Name="idPresEnabled" Location="Resource(wss,idPresEnabled)" /&gt;&lt;ParameterBinding Name="NoAnnouncements" Location="Resource(wss,noXinviewofY_LIST)" /&gt;&lt;ParameterBinding Name="NoAnnouncementsHowTo" Location="Resource(wss,noXinviewofY_DEFAULT)" /&gt;</property>
      <property name="DataSourceMode" type="Microsoft.SharePoint.WebControls.SPDataSourceMode, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">List</property>
      <property name="AutoRefreshInterval" type="int">60</property>
      <property name="AsyncRefresh" type="bool">False</property>
      <property name="HelpUrl" type="string" />
      <property name="MissingAssembly" type="string">Cannot import this Web Part.</property>
      <property name="XslLink" type="string" null="true" />
      <property name="SelectParameters" type="string" />
    </properties>
  </data>
</webPart>

サンプル Web パーツ接続 XmlNode 要素

<WebPartPages:SPWebPartConnection ConsumerConnectionPointID="DFWP Filter Consumer ID" ConsumerID="g_bcca2ac1_f0f1_4640_af30_8a0730ca840e" ID="c1638508205" ProviderConnectionPointID="ITransformableFilterValues" ProviderID="g_7fc41891_2e27_4835_99c8_5b6f80feb20f"><WebPartPages:TransformableFilterValuesToParametersTransformer ConsumerFieldNames="PageType" ProviderFieldNames="Page Field"></WebPartPages:TransformableFilterValuesToParametersTransformer>
</WebPartPages:SPWebPartConnection>