SharePoint Online や OneDrive for Business に保存されているファイルを「共有」しようと共有リンクを作成し、そのリンクの URL にアクセスすると Office Online や SharePoint のプレビュー機能によってブラウザ上で表示されますよね。

この機能はとても便利なのですが、場合によってはユーザーに直接ダウンロードさせたいと考えることもあるかもしれません。

そうした直接ダウンロードさせたいときの共有リンクの作り方を調べてみました。

download=1 を利用した共有リンクの作り方

調べていると、共有リンクの URL に「download=1」を追加することで、ファイルに直接アクセスできるようでした。

SharePoint Online や OneDrive for Business で作成できる共有リンクには次の 4 つの種類があります。

  • リンクを知っているすべてのユーザー
  • リンクを知っている <組織内> のユーザー
  • 既存アクセス権を持つユーザー
  • 特定のユーザー

選択した種類により作成される URL がちょっと異なりますので、それぞれのパターンでダウンロードさせる共有リンクの作り方を調べていきたいと思います。

もちろん共有リンクを作成するときには、「ダウンロードを禁止する」を無効化しておくようにしてくださいね。

リンクを知っているすべてのユーザー

まずは通常通りにリンクを作成します。次のような URL が取得できるはずです。

https://contoso.sharepoint.com/:p:/t/sample/EbVIbIzcpudNgCV70EW69QMBgHHzATiAOUE6CaARtEtb7g?e=3XkaI6

この URL の最後に「&download=1」を追加すると、ダウンロードするための URL になります。

https://contoso.sharepoint.com/:p:/t/sample/EbVIbIzcpudNgCV70EW69QMBgHHzATiAOUE6CaARtEtb7g?e=3XkaI6&download=1

また、作成済みの共有リンクで URL の最後が「?e=3XkaI6」のようになっていない場合は、「?download=1」を URL の最後に追加してください。

https://contoso.sharepoint.com/:p:/t/sample/EbVIbIzcpudNgCV70EW69QMBgHHzATiAOUE6CaARtEtb7g?download=1

これでファイルをダウンロードする URL になります。

リンクを知っている <組織内> のユーザー

こちらは先ほどと同じパターンです。次のような URL が取得できます。

https://contoso.sharepoint.com/:p:/t/sample/ETJ_tURoW0FEus4dxPRe35QBLYdMnfUDxyUaojOWzTloRQ?e=k74myW

先ほどと同じように、最後に「&download=1」を追加します。

https://contoso.sharepoint.com/:p:/t/sample/ETJ_tURoW0FEus4dxPRe35QBLYdMnfUDxyUaojOWzTloRQ?e=k74myW&download=1

また、作成済みの共有リンクで URL の最後が「?e=k74myW」のようになっていない場合は、「?download=1」を URL の最後に追加してください。

https://contoso.sharepoint.com/:p:/t/sample/ETJ_tURoW0FEus4dxPRe35QBLYdMnfUDxyUaojOWzTloRQ?download=1

これでファイルをダウンロードする URL になります。

既定のアクセス権を持つユーザー

この場合に作成される共有リンクは先ほどまでとは異なります。次のような URL が取得できるはずです。

https://contoso.sharepoint.com/:p:/r/teams/sample/docs/filename.pptx?d=w783339969ee3459b9d7f06e13cdf5074&csf=1&web=1&e=9BHzI0

この URL を開くとブラウザでプレビュー表示されてしまいますので、次のように URL の ? 以降を削除します。

https://contoso.sharepoint.com/:p:/r/teams/sample/docs/filename.pptx

これでファイルをダウンロードする URL になります。

特定のユーザー

この場合に作成される共有リンクは次のような URL が取得できるはずです。

https://contoso.sharepoint.com/:p:/t/sample/EQkoz9WinJFBj8_bUZkBRF8B1Kc4pl-jymd25tHNOa_0og?email=john%40contoso.com&e=Jnod0g

次のように最後に「&download=1」を追加します。

https://contoso.sharepoint.com/:p:/t/sample/EQkoz9WinJFBj8_bUZkBRF8B1Kc4pl-jymd25tHNOa_0og?email=john%40contoso.com&e=Jnod0g&download=1

また、作成済みの共有リンクで URL の最後が「?email=john….」のようになっていない場合は、「?download=1」を URL の最後に追加してください。

https://contoso.sharepoint.com/:p:/t/sample/EQkoz9WinJFBj8_bUZkBRF8B1Kc4pl-jymd25tHNOa_0og?download=1

これでファイルをダウンロードする URL になります。

download=1 の注意点とメリット

これらの URL によってファイルをダウンロードする動作になりますが、その時の動作はブラウザによって異なります。

手元で確認してみたところ、PowerPoint ファイルのダウンロード URL を作成した場合、Google Chrome ではファイルをダウンロードしますが、Chromium の Microsoft Edge では、PowerPoint が立ち上がってダウンロードしたファイルを直接開く動作になりました。

一方で大きなメリットと感じたのは、画像ファイルなどの場合に、download=1 が付いた URL を HTML の img タグの src 属性に指定すると、きちんと動作しそうであったことです。Power Apps のキャンバスアプリに画像を表示するときなどにも利用できるかもしれません。

/_layouts/download.aspx を利用した共有リンクの作り方

もうひとつの方法として、「/_layouts/download.aspx」という隠しファイルを利用してファイルをダウロードさせる方法がありました。

たとえば、SharePoint Online や OneDrive for Business の「共有」から、次のように組織内との共有リンクを作成したとします。

https://contoso.sharepoint.com/:p:/t/sample/ETJ_tURoW0FEus4dxPRe35QBLYdMnfUDxyUaojOWzTloRQ?e=k74myW

この URL に含まれる「ETJ_tURoW0FEus4dxPRe35QBLYdMnfUDxyUaojOWzTloRQ」が共有のための ID です。これを利用して次のような URL を作成しアクセスすることでもダウンロードできます。

https://contoso.sharepoint.com/teams/sample/_layouts/download.aspx?share=ETJ_tURoW0FEus4dxPRe35QBLYdMnfUDxyUaojOWzTloRQ

ドキュメントが保管されているサイトの URL に「/_layouts/download.aspx」を追加し、「?share=」には共有のための ID を指定します。

または、次のような URL を作成しダウンロードすることもできます。

https://contoso.sharepoint.com/teams/sample/_layouts/download.aspx?SourceUrl=/teams/sample/docs/filename.pptx

または、

https://contoso.sharepoint.com/teams/sample/_layouts/download.aspx?SourceUrl=https://contoso.sharepoint.com/teams/sample/docs/filename.pptx

サイトの URL に「/_layouts/download.aspx」を追加するのは同じで、今後は「?SourceUrl=」にファイルへのパスを指定します。

/_layouts/download.aspx の注意点とメリット

こちらの方法の注意点は、URL にアクセスするユーザーは、ファイルが保存されているサイトに対してアクセス権が与えられている必要がある点です。

しかしこちらの方法は、ブラウザによらずダウンロードされる動作になります。確実にファイルをダウンロードさせたいという場合には、こちらの方法を利用するのが良さそうです。

さいごに

あまり活用する機会がないかもしれませんが、知っておくと便利に使えることがあるかもしれない小技でした。