はじめに
SharePointリストの添付ファイルに保存されたPDFは通常では表示することが出来ません。
ですが、PDFファイルをbase64でエンコードし、SharePointリストに保存することでPower AppsのPDFビュアーでPDFファイルを保存することが出来ます。
こちらの方法にはメリットとデメリットがあります。
動作はリスト内に保存している文字列を読み込んでいるため早い
リスト件数が増えるとリストの読み込み速度が遅くなる
30件以上になるとリストを読み込むまでに数分~数十分かかることもある・・・。
base64とは?
Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である。MIMEによって規定されていて、7ビットのデータしか扱うことの出来ない電子メールにて広く利用されている。
いわゆるコンピュータで使用できる言葉のことである。
Wikipadia(一部改変)
SharePointリストの準備
今回は、SharePointリスト名「base64テスト」として作成していく。
最大行数にしておくことをお勧めします!
ここでは「1000」を指定しておきます。
Power Automateの準備
フロー概要
項目が作成されたとき
サイトのアドレス | (任意の場所) |
リスト名 | (任意の場所) |
変数の初期化
ここでbase64エンコードした値を格納する変数を用意します。
名前 | (任意の名前) |
種類 | 文字列 |
値 |
添付ファイルの取得
サイトのアドレス | 「項目が作成されたとき」同様 |
リスト名 | 「項目が作成されたとき」同様 |
ID | 「項目が作成されたとき:ID」 |
条件
添付ファイルがない場合のエラー対策です。
添付ファイルがない場合はこれ以降のアクションは動作しません。
empty(outputs(‘添付ファイルの取得’)?[‘body’]) | 次の値に等しい | false |
empty(outputs('添付ファイルの取得')?['body'])
Apply to each
「ファイルコンテンツの取得」を追加すると自動で表示されます。
ファイルコンテンツの取得
サイトのアドレス | 「項目が作成されたとき」同様 |
ファイルの識別子 | 「添付ファイルの取得:Id」 |
変数の指定
名前 | 「変数の初期化」の名前 |
値 | DataUri(base64ToBinary(outputs(‘ファイル_コンテンツの取得’)?[‘body’]?[‘$content’])) |
DataUri(base64ToBinary(outputs('ファイル_コンテンツの取得')?['body']?['$content']))
項目の更新
サイトのアドレス | 「項目が作成されたとき」同様 |
リスト名 | 「項目が作成されたとき」同様 |
ID | 「項目が作成されたとき:ID」 |
base64 | 「変数の初期化」の名前 |
Power Automateの動作後
Power Atuomateが動作し、SharePointリストにはこのように保存されていれば正しく動作しています!
Power Apps
App | Screen1 | PDFビューアー(試験段階) | PdfViewer1 |
垂直ギャラリー | Gallery1 |
データの接続
「SharePointリストの準備」で作成したSharePointに接続してください。
PDFビューアー(試験段階)
LookUp(base64テスト,Gallery1.Selected.タイトル=タイトル).base64
注意事項
読み込みに時間がかかるため、読み込み中画面を実装したほうがユーザインターフェイス向上が図れます。