はじめに
HTMLの置き場として、アクセス権(閲覧権)、ファイル容量の観点から、office365を導入しているならSharePoint上に配置すればいいんじゃないかと考えた際、そのままHTMLをアップロードしても、ダウンロードされるだけでSharePoint上では閲覧できない問題が発生します。
社内SEなら知っておきたいその技術的問題を回避する手順・方法を本記事で解説します。なお執筆時点(2024/10月)では実現可能な方法ですが、SharePointの仕様が変わるとできなくなる可能性は否定できないのでご了承ください。(そうなったら僕もピンチになるので祈る思いです。)
実装時の最重要ポイント
押えておきたいポイントは以下のとおりです。
- HTMLの拡張子を.htmlから.aspxにすべて変換する
- HTMLを配置したいターゲットサイトのトップサイトのカスタムスクリプトを許可する(サブサイトの場合は、サブサイトを持つ親サイトのことです。)
- PowerShellの実行ポリシーをRemoteSignedに変更
- 実行環境のPowerShellのバージョンに適したPnP.PowerShellのバージョンをインストールする
- 変換したHTMLファイル群のアップロードはサイトコレクション管理者権限を持つアカウントで実施する
それではポイントを押さえたうえで、手順を順に紹介します。
HTMLの拡張子をaspxにすべて変換する
ファイルの拡張子だけではなく、HTML内に記入されたリンク先の拡張子も含めてすべてaspxに変換します。
効率的に一括変換する方法
サクラエディタとコマンドプロンプトを組み合わせると効率的に漏れなく一括変換できます。
- 拡張子を一括変換:コマンドプロンプト
##子ディレクトリも変換対象となります。
set target_dir = <変換したいディレクトリ>
for /R %target_dir% %i in(*.html)do ren %i.*aspx
- HTMLファイル内に記載された拡張子の一括変換:サクラエディタのGrep置換
PnP.PowerShellを実行
Pnp.PowerShellでターゲットサイトのカスタムスクリプトを許可します。一度許可しても翌日には禁止に戻っているのでHTMLアップロード前は毎回行う必要があります。なおPowerShellは管理者で実行することをおすすめします。
#ポリシーの変更
Set-ExecutionPolicy RemoteSigned
$Account = <サイトコレクション管理者権限のあるOffice365アカウント>
$Password = Get-Content <パスワードファイルのパス> | ConvertTo-SecureString
$TargetSite = <ターゲットサイト(トップサイト)>
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Account, $Password
#PnPOnlineに非対話で接続
Connect-PnPOnline -Url $TargetSite -Credentials $Credential
Set-PnPSite -Identity $TargetSite -NoScriptSite $false
#PnPOlineから接続解除する
Disconnect-PnPOnline
これでHTMLをSharePointにアップロードする準備完了です!なおエラーとなる場合は、実行前にPnP.PowerShelがインスト―ルされているか、またPowerShellのバージョンと合致しているか確認してください。PnP.PowerShellを実行するクライアント端末またはサーバーのPowerShellのバージョンが7.4未満なら、PnP.PowerShellのバージョンは最新はなく、1.12.0以下を指定する必要があります。
#PowerShellのバージョンを確認する
$PSVersionTable
#PnP.PowerShellのバージョンを確認する
(Get-InstalledModule -Name PnP.PowerShell).Version
#バージョンが適していない場合はPnP.PowerShellを再インストール
Uninstall-Module -Name PnP.PowerShell
Install-Module -Name PnP.PowerShell -RequiredVersion 1.12.0
HTMLファイルのアップロード
SharePointのライブラリ(ドキュメント)にアップロードします。その際サイトコレクション管理者権限でないと、HTMLがブラウザで開かれずダウンロードになってしまいます。
サイトコレクション管理者がどのアカウントかわからない場合は、管理者用アカウントでアップロードすればたいていは解決すると思います。
まとめ
以上で、『社内SEなら知っておきたいSharePointにHTMLを設置する手順』でした。一見簡単そうに見えますが、ここにたどり着くまで労力と工数をかけたのが懐かしいです。社内SEの仲間の皆様の参考になることお祈りしております。
コメント