2023年1月26日 (木)

Stream (on SharePoint) への移行: Stream (クラシック) Webパーツを見つけるスクリプト

以前の投稿でStream (on SharePoint) に移行ツールを使えば、Stream (クラシック)への既存のリンクはしばらくの間はリダイレクトされるという話を書きました。

🔗 SharePoint Technical Notes : Stream (on SharePoint)への移行: リダイレクトについて (lekumo.biz)

特に SharePoint ページに Stream Webパーツを使ってビデオコンテンツを配置しているケースが多いと思います。そんな中、Microsoft MVP の一人である てっちゃん (@techan_k) さんが SharePoint ページ上にある Stream Webパーツを CSV ファイルに書き出すスクリプトを公開してくれています。助かりますね。

📝 Export of Stream (Classic) Web Parts and pages that use them | PnP Samples

20230126_103356

私の方でもさっそく試してみたのですが、メモ書きを残しておこうと思います。

PnP PowerShellを使う準備

PnP PowerShell を使うため事前準備が必要です。PnP の概要などは下記にまとめています。

🔗 SharePoint Technical Notes : PnP PowerShell の概要とインストール (lekumo.biz)

実行

まずはローカルにスクリプトファイル(*.ps1)を用意します。例では "spo-export-stream-classic-webparts.ps1"というファイル名が使われているので、これにしておくとよいでしょう。ここに、GitHubに公開されているスクリプトをコピーして貼り付けておきます。

スクリプトの実行方法は上記のGitHub内およびスクリプト内のコメントにも書かれていますので確認しておきましょう。

20230125_121706

都度、サイトを指定してサイト単位で Stream Webパーツがあるページを探索することになります。

20230124_223853_2

結果はCSVファイルに出力されます。出力場所はマイドキュメント(My Documents)内に作成される "StreamClassicWebPartsReport" フォルダーです。

スクリプト実行後に、このフォルダーを開くようにしたい場合は、次のように -openFolder オプションを指定してスクリプトを実行します。

.\spo-export-stream-classic-webparts.ps1 -siteUrl "https://contoso.sharepoint.com/PnPScriptSamples" -openFolder 

実行すると「日付-サイト名.csv」という名前付け規則でCSVファイルが生成されます。ちなみにスクリーンショットでは訳があって「日付-サイトID」で生成しています。20230124_223952

このファイルを確認すれば、どのページに当該Webパーツが埋め込まれているかがわかります。

20230125_122134

注意点

最終的にはスクリプトの実行は首尾よくいったのですが、最初はいくつかのエラーに遭遇したので備忘録して残しておきます。

最初のエラーは Getting SitePages .. Started 時点で遭遇したページのエラーでした。このページを実際に開くと前に何かを試したのかページ自体がエラーとなっていました。おそらくWebパーツの不具合だったと思いますが、よくみると作りかけで実際には参照していないものであったためページ自体を削除しました。

次が Processing pages -- Started 時点のエラーで、下記が実際のエラー画面です。「フォルダーに...」というページ。

20230124_222924

なんだろうとページを開いたのですが、こちらはページ自体何も問題ない。ですが、ページの詳細を確認すると説明部分に文字化けが。。。本文に書いていた絵文字までが説明部分に追加されており、文字化けしていたわけです。Cannot read incomplete UTF-16 JSON text とエラーメッセージにあるので、これかなと詳細ウィンドウを修正し文字化けを取り除きました。20230125_091406

さて、ここまででページの取得は無事に完了したのですが、CSVファイルの出力でまたエラー。なんだろうとよくよく確認すると、運悪く対象のサイト名が「SharePoint/OneDrive/Stream の利活用」となっている。サイト名にファイル名に使用できない文字が含まれていたのです。手っ取り早く修正するためにスクリプトを修正して $site.Title を $site.ID に置き換えました。


20230124_222823

以上で無事にスクリプトが実行できたわけです。

最後に

最後に遭遇した不具合の情報を書きましたが、スクリプト自体は自分で作ると面倒ですし、そもそもPowerShellを書くための基礎知識が必要です。こうしたスクリプトを公開し共有してくれるのは、本当に助かります。

これで新しい Stream への移行が少しでもスムーズにいくといいですね。

コメント