新規記事を募集中!ここから募集ページへ

【Power Apps】PDFビュアーでSharePointリストの添付ファイルのPDFを開く方法『第1弾』

はじめに

SharePointリストの添付ファイルに保存されたPDFは通常では表示することが出来ません。
ですが、PDFファイルをbase64でエンコードし、SharePointリストに保存することでPower AppsのPDFビュアーでPDFファイルを保存することが出来ます。

こちらの方法にはメリットとデメリットがあります。

メリット

動作はリスト内に保存している文字列を読み込んでいるため早い

デメリット

リスト件数が増えるとリストの読み込み速度が遅くなる
30件以上になるとリストを読み込むまでに数分~数十分かかることもある・・・。

base64とは?

Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。MIMEによって規定されていて、7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている。

いわゆるコンピュータで使用できる言葉のことである。

Wikipadia(一部改変)

SharePointリストの準備

今回は、SharePointリスト名「base64テスト」として作成していく。

base64の値を保存する「複数行テキスト」を追加する
リストの設定から複数行テキストの「編集対象の行数」を変更する

最大行数にしておくことをお勧めします!
ここでは「1000」を指定しておきます。

Power Automateの準備

フロー概要

項目が作成されたとき

サイトのアドレス(任意の場所)
リスト名(任意の場所)

変数の初期化

ここでbase64エンコードした値を格納する変数を用意します。

名前(任意の名前)
種類文字列

添付ファイルの取得

サイトのアドレス「項目が作成されたとき」同様
リスト名「項目が作成されたとき」同様
ID「項目が作成されたとき:ID」

条件

添付ファイルがない場合のエラー対策です。
添付ファイルがない場合はこれ以降のアクションは動作しません。

empty(outputs(‘添付ファイルの取得’)?[‘body’])次の値に等しいfalse
Power Automate(コピー用)
empty(outputs('添付ファイルの取得')?['body'])

Apply to each

「ファイルコンテンツの取得」を追加すると自動で表示されます。

ファイルコンテンツの取得

サイトのアドレス「項目が作成されたとき」同様
ファイルの識別子「添付ファイルの取得:Id」

変数の指定

名前「変数の初期化」の名前
DataUri(base64ToBinary(outputs(‘ファイル_コンテンツの取得’)?[‘body’]?[‘$content’]))
Power Automate (コピー用)
DataUri(base64ToBinary(outputs('ファイル_コンテンツの取得')?['body']?['$content']))

項目の更新

サイトのアドレス「項目が作成されたとき」同様
リスト名「項目が作成されたとき」同様
ID「項目が作成されたとき:ID」
base64「変数の初期化」の名前

Power Automateの動作後

Power Atuomateが動作し、SharePointリストにはこのように保存されていれば正しく動作しています!

Power Apps

App Screen1  PDFビューアー(試験段階) PdfViewer1
 垂直ギャラリー Gallery1

データの接続

「SharePointリストの準備」で作成したSharePointに接続してください。

PDFビューアー(試験段階)

Document
LookUp(base64テスト,Gallery1.Selected.タイトル=タイトル).base64

注意事項

読み込みに時間がかかるため、読み込み中画面を実装したほうがユーザインターフェイス向上が図れます。

コメント