はじめに
Microsoft Dataverse では、以下のようにテーブルにファイルや画像を保存する用の列を追加することが出来ます。
利用ケースは沢山あると思いますが、例えば、私の場合、以下のような感じで、Power Apps で領収書を読み取り、読み取ったデータを保存すると共に、ファイル自体も保存したいというケースで、このファイルや画像の列を利用しています。
このように、Power Apps で画像を取り、Power Automate を介して Dataverse にファイルを保存する方法について、あまり情報がなく、ちょっと時間を要してしまったので、備忘も兼ねて記事を書きました。
アプローチ
Power Apps
Power Apps では、以下などと同じように、AI Builder の OCR とカスタムプロンプトで読み取った情報を JSON 形式にします。Power Apps 側はここがポイントになります。
そして、以下のようにして、Power Automate に情報を渡します。
領収書保存フロー.Run(
TextInputCanvas1_1.Value,
JSON(
TextRecognizer1.OriginalImage,
JSONFormat.IncludeBinaryData
),
Concatenate(
"recipt_",
Text(
Now(),
"yyy/mm/dd hh:mm:ss"
)
)
);
Notify(
"領収書情報を保存しました",
NotificationType.Success
);
Navigate(Screen1)
なお、AI プロンプトは以下のような感じで作っています。
Power Automate
Power Automate 側は以下のような感じです。
JSON データは、Power Apps に表示されているものをサンプルとして解析する感じです。
作成アクションは以下のような感じです。この辺がちょっと難しい、また、情報をすぐに見つけられなかったところです。
replace(split(triggerBody()['text_1'],',')[1],'"','')
あとは、画像の場合は、レコード作成と一緒に保存し、ファイルの場合は、レコード作成後に追加します。
結果
アプリを実行してみます。無事にフローが成功し、ファイルも保存されました。
※今回は、あえて画像とファイルを両方保存しましたが、最終的にはどちらか片方のみ残します
まとめ
今回は、Power Apps から Power Automate を介して Dataverse のファイル列に保存をする方法を紹介しました。紹介したように、データと合わせてファイル自体を保存するようなケース多いと思いますし、ファイルの保存で詰まってしまうのはもったいないので、今後同じようなことをしようとする方の参考になれば幸いです