【SharePoint Online】ファイルのダウンロードリンクを生成する【Download.aspx】【PowerShell】
今回はSPO上に配置してあるファイルのダウンロードリンクを作成する方法を説明していきます。
このリンクをハイパーリンク列などに配置しておけば、
Officeファイルなどのアイテムを直接ダウンロードすることができます。
それでは行きましょう。
GetFileByServerRelativeUrlを利用する
実はSharePoint REST APIのGetFileByServerRelativeUrlでダウンロードすることができます。
コードは以下です。
https://{テナント}.sharepoint.com/sites/{サイト名}/_api/web/GetFileByServerRelativeUrl('/sites/lib/sample.aspx')/$value
ですが、私の環境で行うとファイル名が「$value」となってしまいます。

因みにIEではダウンロードすることすらできません。
→IEではREST APIが利用できないので。。。

Download.aspxを利用する
ということで、Download.aspxを利用します。
これは、通常のライブラリの「ダウンロード」ボタンと同じ動作になります。
Chromeで通信を監視すると確認することができます。

ソース内では[UniqueId]をクエリパラメータとしています。
ですが、別のクエリパラメータ[SorceURL]を利用することもできます。
https://{テナント}.sharepoint.com/sites/{サイト名}/_layouts/15/download.aspx?SourceUrl=https://{テナント}.sharepoint.com/sites/TestModern2/Shared%20Documents/test.docx
SorceURLの問題点
SourceURLは生成することは簡単ですが、これにも問題があります。
パスが長すぎるため、頻繁にURLが255文字以上になってしまうのです。
255文字以上になってしまうと、IEでは利用できません。
なのでやはりUniqueIdで利用する必要があるようです。。。
UniqueIdを探す
ではUniqueIdはどのようにして調べるのでしょうか。
私が調べる限りでは、UI上から取得することはできませんでした。残念。
ということでPowerShellで取得しましょう。
簡単ですがソースは以下です。
※急いで作ったものですので、Exportなどは適宣設定してください。
実行結果は以下となります。

早速取得したUniqueIdを利用してURLを作成してみましょう。
https://{テナント}.sharepoint.com/sites/{サイト名}/_layouts/15/download.aspx?UniqueId={54cc43ed-ed53-4e07-bbfd-6613cabadf69}
これでブラウザに関係なくダウンロードできるURLが作成されました。
終わりに
今回は以上です。
最初はJSON書式設定で色々頑張っていましたが、
ゴリ押しでなんとかなった感じです。。。
ではまた。
Discussion
New Comments
No comments yet. Be the first one!