コルネの進捗や備忘録が記されたなにか

進捗や成果物や備忘録てきななにかを雑に更新していきます。

Power Apps でローカルからアップしたファイルをSharePoint のドキュメントライブラリに保存する ~その3~


スポンサードリンク

はじめに

この記事はPower Apps でローカルからアップしたファイルをSharePoint のドキュメントライブラリに保存する ~その2~の続きです。

Power Apps でローカルからアップしたファイルをSharePoint のドキュメントライブラリに保存する ~その1~
Power Apps でローカルからアップしたファイルをSharePoint のドキュメントライブラリに保存する ~その2~

参考文献

Power Apps Easiest Way To Upload Files To A SharePoint Document Library

Power AppsからExcelファイルを取り込んでDataverse for Teamsにデータ登録 - MoreBeerMorePower

Power Appsにおける画像の扱いについて - Qiita

Power Apps からアップロードされたファイルをSharePoint ドキュメントライブラリに保存する

Power Apps V2 トリガーを利用

次はPower Automate にてPower Apps V2 トリガーを利用してSharePoint ドキュメントライブラリにファイルをアップロードするやり方です。

f:id:koruneko:20210708000012p:plain

Power Automate 側の処理

今回はPower Automate 側のフローから作成していきます。

トリガーとして利用するのは、"Power Apps (V2)" です。

f:id:koruneko:20210708000437p:plain

こちらのPower Apps V2 では、Power Apps からPower Automate に渡すデータの定義が可能になりました。

f:id:koruneko:20210708002403p:plain

選択可能なのは

  • テキスト(Text)
  • はい/いいえ(Boolean)
  • ファイル(File)
  • 電子メール(Email)
  • 数(Number)
  • 日付(Date)

の6つです。

これらの変数は、自分で名前を付けることができるため、用途に合わせてわかりやすい名前をつけたり、対象の変数を必須 or オプションにすることが可能です。

また、例えばテキストですと複数選択リストにしたり、ドロップダウンリストにしたりすることもできます。

ここの詳しい纏めはまた別の機会にすることにします。

今回はファイルを扱いますので、ユーザー入力の種類では"ファイル"を選択します。

変数名や説明はなんでもいいですが、対象の変数を必須にしたのか?オプションにしたのか?だけは最低限把握しておいてください。

ここで必須にしたのかオプションにしたのかでPower Apps からPower Automate への値の渡し方が変わってきます。

あとは、これまでと同じようにファイルの作成アクションを追加して、任意のフォルダーパスを選択します。

ファイル名には

@{triggerBody()['file']['name']}

を設定してください。

ファイルコンテンツには

@{triggerBody()['file']['contentBytes']}

を設定してください。

これでフローの作成は完了です。

f:id:koruneko:20210708013608p:plain

Power Apps 側の処理

Power Apps 側で必要なコントロールは、

の2つだけです。

前回はPower Apps からPower Automate にファイルを渡すために色々やっていましたが、今回はその必要はありません。
ファイル名とファイルコンテンツを渡すだけです。
形式はレコードになります。

ただし先ほども記載したように1点注意が必要で、Power Automate で宣言した変数が必須化オプションかで渡し方が変わってきます。

それぞれを設定した場合の設定例を記載します。

必須の場合

PowerAppsV2_Create_DocumentFile_to_SharePointCreate_DocumentFile_to_SharePoint_Required.Run(
    {
        name: First(AttachmentComponent_2.Attachments).Name,
        contentBytes: First(AttachmentComponent_2.Attachments).Value
    }
)

オプションの場合

PowerAppsV2_Create_DocumentFile_to_SharePointCreate_DocumentFile_to_SharePoint.Run(
    {
        file:{
            name: First(AttachmentComponent_2.Attachments).Name,
            contentBytes: First(AttachmentComponent_2.Attachments).Value
        }
    }
)

オプションの場合は、必須と違い省略してもいい項目となっています。
そして例えばテキストのオプション変数もあった場合、順不同で設定してもよいです。

このときPower Apps から変数を受け取ったPower Automate がその値がなんの値かを判断する必要があります。
その判断部分が {file:} となります。

このオプションの設定方法として、皆さんに馴染み深そうなのは SearchUser でしょうか。

f:id:koruneko:20210708015916p:plain

これもオプション項目が設定でき、これらのオプション項目を設定せずとも関数を実行することができますね。

以上でPower Apps V2 トリガーを利用したSharePoint ドキュメントライブラリへのファイルのアップロード処理は作成完了です。

それぞれのメリット/デメリット

最後にそれぞれのメリット / デメリットについて纏めます。

  • 方法1
    SharePoint リストを経由してドキュメントライブラリに保存
  • 方法2
    Power Apps にアップロードされたファイルのコンテンツ情報をdatauri に変換してPower Automate に渡しドキュメントライブラリにファイルを保存
  • 方法3
    Power Automate のPower Apps V2 トリガーを利用
方法 メリット デメリット
方法1 ・3つの中で一番単純
・複数ファイルをアップできる
・本来不要なSharePoint リストを作成/管理する必要がある
・即時実行でない
方法2 ・即時実行が可能
・複数ファイルをアップできる
・ロジックがちょっと複雑
方法3 ・即時実行が可能 ・複数ファイルをアップするときはそれだけフローで変数の定義が必要

おわりに

あくまで個人的な意見ですが、用途に合わせて方法2 or 方法3を利用するのがいいんじゃないかな。
と考えます。

方法1を利用するパターンはSharePoint リストにもアップする必要があって即時アップじゃなくても許容できる場合ですかね。
管理対象が増えるのは保守的な観点から考えてよくないと考えます。

自身の用途に合ったものを取捨選択するのが大切ですね。


スポンサードリンク