【PowerApps Tip's】ドキュメントライブラリをデータソースにする

2019年3月20日のコミュニティBLOGによると、SharePoint Online（SPO）のドキュメントライブラリをデータソースにする機能がGA（一般公開）されたようですね。なので、早速試してみました。

■コミュニティBLOG
　[Sharepoint Online document libraries now supported](https://powerapps.microsoft.com/ja-jp/blog/sharepoint-online-document-libraries-now-supported/)

#前準備
データーソースに指定するSPOのドキュメントライブラリを準備します。今回はサイトコレクションを作成した際に自動で作成される”ドキュメント”を利用します。
![01.png](https://qiita-image-store.s3.amazonaws.com/0/215892/2e50f9cf-e8ca-9277-b36e-974874bd2e59.png)
データも格納しておきましょう。第1階層にフォルダーを１つと、画像を複数格納。
![02.png](https://qiita-image-store.s3.amazonaws.com/0/215892/685e4a2a-470d-16c2-16e3-99c18b0ff420.png)
先ほどのフォルダー配下にもファイルを数種類格納。
![03.png](https://qiita-image-store.s3.amazonaws.com/0/215892/b353d030-e065-dcd1-6142-91e621f108d9.png)

ちなみに、このデフォルトで作成されるドキュメントライブラリですが、内部名などが微妙な感じなので、本格的なアプリを作成される際は半角英数字を利用したドキュメントライブラリを新規作成するのが良いと思います。

#PowerApps アプリを作ってみる
1. キャンパスアプリを新規作成し、「ビュー」タブ → [データソース] → [データソースの追加] → [SharePoint]（選択肢に無い場合は[新しい接続]から追加）→ 該当サイトのURLを入力して「接続」とすると・・・。出てきました[ドキュメント]の選択肢！！
![04.png](https://qiita-image-store.s3.amazonaws.com/0/215892/f7f94ce1-e0d4-d682-1e20-1a573e6447ef.png)
 
2. ギャラリーコントロールの追加
ギャラリーコントロール（横）を追加して、項目プロパティから上記1．の手順で追加したデータソース（ドキュメント）を指定します。
![05.png](https://qiita-image-store.s3.amazonaws.com/0/215892/553a45f6-c47c-11b4-debd-9e1ff5f25bc0.png)

3. フィールドを設定する
各フィールドを設定していきます。ギャラリーコントロール配下のImageコントロール。GUIの項目では設定しきれないため、関数バー（数式バー？）を利用して直接設定する必要があります。

 ```Image.image
 ThisItem.サムネイル.Large
 ```

その他の項目は、GUI上のドロップダウンで選択可能な「拡張子付きのファイル名」と「更新日時」程度で良いでしょう。なお「タイトル」は明示的に入力していないとブランクのままです。ここらへんはSharePointの仕様をそのまま受け継いでいます。

![06.png](https://qiita-image-store.s3.amazonaws.com/0/215892/4adf5cdb-9cde-ba8c-6134-d9ba1579823e.png)

4. 完成！
必要なプロパティを設定すれば完成です。ドキュメントライブラリに格納したファイルの情報が閲覧できていますね。簡単。素敵♪
![07.png](https://qiita-image-store.s3.amazonaws.com/0/215892/834efa5f-9e4d-c03b-528c-732f1b5daff7.png)

#注意事項
便利そうなドキュメントライブラリをデータソースへ指定する機能ですが、幾つか注意すべき点があるようです。

1. サムネイルが拾えないアイテムがある
画像以外のファイル（ExcelやWordなど）はサムネイル画像が表示されないことがあります。見た目を気にするのであれば、何らかの処理を追加してダミーの画像でも表示する必要があるかもしれませんね。
![08.png](https://qiita-image-store.s3.amazonaws.com/0/215892/170deb65-a706-5253-60e1-594ed96b9441.png)


2. フォルダーも表示されてしまう
SharePointのドキュメントライブラリ上では、フォルダーもその他電子ファイルも”１つのアイテム”として管理されています（※属性がチョッと違うけど）。そのせいなのか、データソースに指定したドキュメントライブラリ配下にあるフォルダーもギャラリーに表示されています。除外したい場合は、Filter関数を利用する必要があります。
![09.png](https://qiita-image-store.s3.amazonaws.com/0/215892/50b7232d-3513-2ff9-25f7-9a4bddfc4e1f.png)

3. 階層は無視されます
無視されているように見える、というのが正確な表現になるかもしれません。データソースとしては「フォルダーのパス」や「アイテムへのリンク」というプロパティで階層情報を取得することができます。ディレクトリ構造を意識したい場合は、それらを利用したロジックを組む必要がありそうです。
![10.png](https://qiita-image-store.s3.amazonaws.com/0/215892/c1455b59-b3de-8bf5-d34c-8d7c703bc2ad.png)
![11.png](https://qiita-image-store.s3.amazonaws.com/0/215892/017bb233-e643-af58-fb01-5c743c9fe3bd.png)

他にもハマりポイントはありそうですが、現状はここらへんが注意点になるかな、と思っています。

#まとめ
- PowerApps で SharePoint Online の ドキュメントライブラリがデータソースにできるぞ！
- サムネイル画像を利用すればギャラリー（一覧）が簡単に作成できる
- サムネイル画像が表示できないアイテムが存在する
- フォルダーも含んだ状態でデータソースとして提供される
- 階層は無視されたようにみえる
    - 「フォルダーのパス」プロパティ等で判別可能

これまでプレビューだったので触らないでおりましたが、GAされた、とのコトですのでガシガシ触っていきましょう。次はドキュメントライブラリへの登録・更新系を考えてみなきゃ、ですかね。

##Special Thanks
当方が登壇スライドなどで利用しているカエル等に、今回のアプリでも登場してもらいました。その画像は [ダ鳥獣戯画](http://www.chojugiga.com/) 様から入手しております。いつもお世話になっております。ありがとうございます！

それでは、皆さま。素晴らしい Power Platform Life を！