先日、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にファイルをアップロードできるようにします。
OneDrive for Businessのファイルの作成アクションを追加します。

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

フォルダーのパス | 任意のフォルダー |
ファイル名 | @{triggerBody()?[‘file’]?[‘name’]} |
ファイル コンテンツ | @{triggerBody()[‘file’][‘contentBytes’]} |
Power Apps側の設定
添付ファイルコントロール
Power AppsでPCのエクスプローラーからファイルを選択できる、添付ファイルコントロールというコントロールがあります。
この添付ファイルコントロールはデフォルトでは設置できず、SharePointリストの添付ファイルカードでのみ設置できます。
フォーム→編集より編集フォームを追加し、適当なSharePointリストと接続します。

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

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

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

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

OneDriveフォルダ内にすぐにアップロードされました。
注意点
今回紹介した方法では、First関数で一番最初の添付ファイルのみ渡すようにしています。
複数の添付ファイルを使用したい場合には以下の記事をご覧ください。
コメント
[…] この記事は、Power AppsからOneDriveにファイルをアップロードするの続きです。 […]
[…] →Power AppsからOneDriveにファイルをアップロードする […]
記事通りやってみてもうまくできませんでしたが、ボタンに設定する関数を以下のようにしたら動作しました。(2024.9.13実施)
私のやり方が悪かったのか、仕様が変更されたのかはわかりませんが、誰かの役に立つかもしれないので一応残しておきます。
PowerAppsからOneDriveにアップロード.Run(
{
contentBytes: First(DataCardValue1.Attachments).Value,
name: First(DataCardValue1.Attachments).Name
}
)
修正漏れです。
おかげさまで記事修正すべき点に気が付くことができました。ありがとうございます。