PowerAppでSharePointのファイルをダウンロード

Cloud files

はじめに

PowerAppsでSharePoint上のファイルを取り扱う際、Download関数を使用してファイルをダウンロードする機能を実装することがあるかと思います。

しかし、Download関数で指定するURLを通常のファイルリンクにすると、ファイルがダウンロードされず、そのままブラウザで開いてしまう場合があります。URLパラメータとして、「download=1」を設定する方法もありますが、これでもブラウザの設定に依存した動作により、ファイルの拡張子によっては、ダウンロードではなくブラウザで直接開かれてしまいます。

解決方法

この問題を解決する確実な方法として、SharePointの専用ダウンロードページを利用する方法があります。

具体的には、以下の形式でURLを構築します。

https://[テナント名].sharepoint.com/sites/[サイトネーム]/_layouts/15/download.aspx?SourceUrl=[ファイルの完全なURL]

パラメータの説明

  • [テナント名]: あなたの組織のSharePointテナント名
  • [サイトネーム]: ファイルが格納されているサイト名
  • [ファイルの完全なURL]: ダウンロード対象ファイルの完全なURL(URLエンコードが必要)

実装例

PowerAppsでの実装例を示します:

Download(
    Concatenate(
        "https://contoso.sharepoint.com/sites/mysite/_layouts/15/download.aspx?SourceUrl=",
        EncodeUrl(
            "https://contoso.sharepoint.com/sites/mysite/Shared Documents/folder/file.pdf"
        )
    )
)

補足事項

  • URLエンコードを忘れずに行うことが重要です
  • 対象ファイルへのアクセス権限は従来通り必要です

メリット

この方法には以下のような利点があります。強制的にローカルPCにファイルをダウンロードさせたい場合には便利ですね。

  1. ブラウザの設定に依存せず、一貫した動作が期待できる
  2. すべての拡張子のファイルで確実にダウンロードダイアログが表示される
  3. ユーザー体験の統一性が保たれる

まとめ

上述の通り、SharePointの専用ダウンロードページを利用することで、PowerAppsアプリケーションにおけるファイルダウンロード機能を確実に実装することができます。

それでは、良いPowerAppsライフを!

コメント