先日、Power AppsからPower Automateのフローを起動するトリガーの新しいバージョンが公開されました。
その新しいトリガーを使用して、Power Appsでエクスプローラーから好きなファイルを選択、Power Automateを使用してOneDriveにファイルをアップロードする方法を紹介します。
変更点など→新しくなった Power Apps トリガーの変更点について
Power Automateの[Power Apps(V2)]トリガー
今回追加されたトリガーを追加する方法を紹介します。

トリガーの検索画面でpowerappsと入力すると2つ候補が出てきます。
上が古いバージョンのPower Appsトリガーで、PowerApps(V2)が今回追加されたトリガーです。

トリガーを追加して、入力の追加をクリックします。

ここでファイルを選択すると、以下のようにファイルコンテンツをPower Apps側で入力してPower Automateに渡せるようになります。

Power AppsからOneDriveにファイルをアップロード
Power Automate側の設定
今回はPower AppsからOneDriveにファイルをアップロードできるようにします。
ファイル名を入力するためにPower Appsトリガーでテキストを追加してください。

OneDrive for Businessのファイルの作成アクションを追加します。

アクションには以下のように入力してください。

フォルダーのパス | 任意のフォルダー |
ファイル名 | Power Appsトリガーで入力されたファイル名 |
ファイル コンテンツ | Power Appsトリガーで入力されたファイル コンテンツ |
Power Apps側の設定
添付ファイルコントロール
Power AppsでPCのエクスプローラーからファイルを選択できる、添付ファイルコントロールというコントロールがあります。
この添付ファイルコントロールはデフォルトでは設置できず、SharePointリストの添付ファイルカードでのみ設置できます。
フォーム→編集より編集フォームを追加し、適当なSharePointリストと接続します。

編集フォーム内のクリップのアイコンが添付ファイルコントロールです。
この添付ファイルコントロールのみ必要なので、切り取りしてフォーム外に貼り付けたら編集フォームは消してしまいましょう。

このような状態になればOKです。エラーが気になるようでしたらエラーが起きている箇所をすべて空にしましょう。
フロー実行ボタン
フローを実行するボタンを設置します。
そのボタンを選択した状態で、アクション→Power Automateより先ほど作成したフローをボタンに付与します。

フローへ渡す入力として以下のように入力します。
PowerAppsからOneDriveにアップロード.Run(
First(
DataCardValue1.Attachments
).Name,
{file:{
contentBytes:First(DataCardValue1.Attachments).Value,
name:""
}
}
)
少し複雑ですのでPower AutomateのPower Appsトリガーでファイルを入力する部分に絞って書くと、
{file:
{
contentBytes:ファイルコンテンツを入力,
name:ファイル名を入力
}
}
レコード型で入力しなくてはならないためこのような記入方法になっています。
Power Automate側でファイル名を取り出すことが出来なかったため、file:内で名前は空白の値を渡しています。
動作確認

pdfファイルをアップロードしてみます。

OneDriveフォルダ内にすぐにアップロードされました。
注意点
今回紹介した方法では、First関数で一番最初の添付ファイルのみ渡すようにしています。
複数の添付ファイルを使用したい場合には書き換えが必要になります。
複数のファイルに対応させるには→Power AppsからOneDriveに複数のファイルをアップロードする
コメント
[…] この記事は、Power AppsからOneDriveにファイルをアップロードするの続きです。 […]
[…] →Power AppsからOneDriveにファイルをアップロードする […]