Power AppsでSharePointライブラリ配下のファイルをローカルにダウンロードする方法

今回は、SharePoint内のファイルをローカルにダウンロードするPower Appsの作り方を解説します。

## 手順
1\. Power Appsで空のキャンバスアプリを作成します。

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/19904da2-3682-832e-fc8d-2cb4a05cbf24.png" width = "20%">

<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/f5c4b05b-add2-68fb-60d5-834d841683c8.png" width = "50%">


2\. 「新しい画面」から「リスト」を選択します。
デフォルトで追加されている画面（Screen1）は不要なので削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/1960e09a-7dd2-dde2-610c-dcbc70fb9044.png)
 ※追加した画面名は任意で変更してください。

3\.	[データの追加]ボタンをクリックし、データを追加します。
コネクタからSharePointを選択し、対象のサイトのドキュメントライブラリを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/386ee809-1388-5d8a-9bd3-169c550f3fc3.png)


4\.	画面上に配置されたギャラリーを選択し、追加したデータを「データソース」に設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/e56e0075-9f8c-3d81-b9d6-cdc87a7ea4af.png)


5\.	データソース接続後、画面上に表示する項目をギャラリーの「プロパティ＞フィールド」から設定します。
※必要に応じてヘッダーの追加やレイアウトの設定を行います。

以下は設定例です。
　・レイアウトを「画像、タイトル、サブタイトル」に設定
　・フィールド＞データを設定してヘッダーを追加
　・画像(Image3部分)にはファイルのアイコンをアップロードして変更
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/32536137-554e-2ce8-7873-5ecc1213edda.png)
 

6\.	フィールドを選択後、任意でレイアウトを変更します。
以下は設定例です。
　・ヘッダーを追加（テキストラベルを追加し、背景色とテキストを変更）
　・一覧を1行で表示するようドラッグ&ドロップ操作で整形
　・アイコンを選択し、「＞右」から「 ダウンロード」に変更
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/0bd9755d-fda6-92b3-3282-fd05ef4f56db.png)

 
7\.	ダウンロードアイコンのOnSelectプロパティに、ファイルをダウンロードするための式を設定します。
※ギャラリー名（TemplateGalleryList1）は環境に合わせて変更してください。

設定例１： SharePointのURLを直接指定する
```
OnSelect：
Download(
  "https://tenant.sharepoint.com/sites/siteName/"
  &"_layouts/15/download.aspx?SourceUrl="& TemplateGalleryList1.Selected.アイテムへのリンク
);
```

設定例2： Left関数とFind関数（下図の赤字箇所）を使用して、自動的に取得する

```
OnSelect：
Download(
Left(
TemplateGalleryList1.Selected.アイテムへのリンク,
Find(
TemplateGalleryList1.Selected.フォルダーのパス,
    TemplateGalleryList1.Selected.アイテムへのリンク
) - 1
)&"_layouts/15/download.aspx?SourceUrl="& TemplateGalleryList1.Selected.アイテムへのリンク
);
```

※Left関数：文字列の先頭から指定した数の文字を抽出します。
　Find関数：文字列内で特定の文字や文字列が最初に現れる位置を見つけます。

設定例１では、直接URLを指定しているため、別のデータテーブルに接続する場合は式を修正する必要があります。
しかし設定例２のようにURLを自動で取得することによって、接続先やサイトのURLが変わった場合でも、式を修正せずに使用することができます。

設定は以上です。

## 動作確認
1\.	Power Appsアプリを保存し、右にある▷アイコンをクリックしてアプリを起動します。
（今回はSharePoint_File_Downloadという名前でアプリを作成しました。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/e6bfa639-9525-6292-c052-1aa47721fbc9.png)


2\.	ダウンロードアイコンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/6de9dd91-31ce-fe5b-0f88-6209e6ef08bc.png)
 

選択したファイルがローカルに保存されていることが確認できました:angel:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3992089/c6590545-fa9c-359f-bc1a-870c0b72869b.png)


## まとめ
本記事ではLeft関数とFind関数を使用してリンクを取得し、SharePoint内のファイルをローカルにダウンロードするPower Appsアプリの作り方について解説しました。
テンダでは、他にもPower AppsやPower Automateの活用法について多数記事を公開しています。


## さいごに
テンダでは、「こんなプロジェクトに挑戦したい」「こんなチームで働きたい」「理想のチームを創りたい」と願う仲間を求めています。
カジュアル面談も随時受付中です。ぜひ一度お話ししましょう。

- [募集職種一覧](https://hrmos.co/pages/tenda/jobs)
- [カジュアル面談の申込](https://hrmos.co/pages/tenda/jobs/031002/apply)
- [テンダで働く人や社風について](https://note.com/tenda_recruit)