Power Apps データソースによる画像コピペ貼付けの違いについて その② Dataverse・Dataverese for Teams編 (出来る!)

はじめに

この記事は、Microsoft Power Apps Advent Calendar 2024 12月21日担当分の記事です。

今回はよくTeamsでやり取りする場合、スクショを取ってそのまま貼り付けて共有する。というようなことがキャンバスアプリでも出来るか。という点について記事にしました。
イメージとしては複数行テキスト(HTML化)な列を用意して上記のスクショ貼り付けが出来るかとなります。

今回も先に結論を言ってしまうと、
・SharePointリストがデータソースの場合は無理っぽい(調べた限りでは)
・Dataverseの場合は出来ます!またモデル駆動型の場合はよりリッチに出来る(保持の仕方が異なる)
 ※キャンバスとモデル駆動型で併用の場合は保持の仕方が異なるため基本不可。
・さらにDataverese for Teamsでも出来ます!
 ※キャンバスとDataverese for Teamsの場合はBase64で保持

という感じです。

今回はその②としてDatavereseを使った場合の挙動や検証についてとなります。

その①のSPOリストの場合はこちらの記事をご参考ください

Dataverseの場合は対応している!

上記SPOの場合は無理ですが、Dataverseの場合(複数行テキスト)だと対応しています。
公式のDocsにも記載があります。以下モデル駆動型について記載がありますが、キャンバスアプリでも保持はできました(ただBase64保持となる違いがある)

TIPSモダンリッチとクラシックがあり、現時点ではモダンがデフォルトのようです。
以下、アプリ設定からモダンのリッチテキストエディターを有効化がオンになっていればOKです。
なっていない場合はオンにすればモダンの方が使えます。

モデル駆動型アプリに リッチ テキスト エディター コントロールを追加する – Power Apps | Microsoft Learn

モデル駆動型でのリッチテキストエディターでの画像貼り付け

リッチテキストエディターの概要や設定、詳細については公式をご参考ください。
本記事ではこの画像コピペ貼り付けに焦点を絞って書いてます。

とりあえすテーブルを作成、複数行>リッチテキスト列を追加して、フォームの編集でこの列を追加します。

公開したアプリで開き、この列にスクショした画像を貼り付けます

画像のサイズ調整なども出来る。サンプルでは以下のように縮めてみました。そして保存します。

再度レコードを開いてフォームを確認するとちゃんと貼り付けた画像は保持されて残っています!

URLやローカルから画像をアップロードして埋め込みも可能

上記の貼り付け以外にも以下のようにURLやローカルから画像のアップロード埋め込みも出来ました。
結構使い勝手がよいコントロールですね!

カスタムも可能みたい(要JSON調整)

公式の記事を見ると色々とカスタムも可能なようです。VS CodeなどでJSONファイルを調整すれば全画面表示を許可するなど色々出来るみたいです。このデモではそこまではやってません。

NOTEコントロールの最大の高さも調整する方法がわかりませんでした(対してしらべてないけど)
上記のJSON調整や他の方法でもっと高さを上げれる気はしますが一旦スルーしてます。

画像データは基本は専用テーブルに保持される

これですが、画像データはどのように保持されているのでしょうか。
以下に記載があるのですが通常は専用のテーブル「msdyn_richtextfiles」に保持されます。
また、テーブルに権限がないユーザーの場合はBase64で埋め込みされるとあります。(その場合コンテンツ量が大きいので推奨はしないとあり)

モデル駆動型アプリに リッチ テキスト エディター コントロールを追加する – Power Apps | Microsoft Learn

複数行のデータを見てみる

上記の複数行リッチテキストの中身をテーブルのレコード表示からみてみましょう。この場合は文字列で見えます。

拡大すると以下ハイライトの部分ですね。
これがソース(src)として指定されていて画像が埋め込み表示されています。

Codemsdyn_richtextfiles(GUID)/msdyn_imageblob

もうひとつURL指定したほうは以下のようにソースがURL指定されていますね。

権限のない場合はBase64で登録される

上記の公式にあるようにこのテーブルに権限を付けていない場合はBase64で埋め込みされるとなってます。
権限のないユーザーを作るのが手間なので検証していませんが、通常アプリを利用できるユーザーであれば利用できる認識です。

キャンバスアプリの場合

上記モデル駆動型アプリのコントロールの場合ですが、キャンバスアプリからだとどうでしょう。
同じテーブルに対してアプリを作って確認してみます。

コピペ貼り付けは可能!だがBase64埋め込みになる

以下のようにキャンバスアプリのリッチテキストエディターでコピペで画像を貼って保存します。
保存後もちゃんと画像が残ってくれています!

ただし、中身を見てみると以下のようにBase64での埋め込みになっております。
モデル駆動型アプリのコントロールであれば別テーブルに保持してくれますが、キャンバスアプリからは対応しないようですね。

中身を見るとBase64埋め込みで保持されている

もちろん上記のまま複数行テキスト列へ情報が入っています。データ量が多くなるのであまり推奨はされないとありますが、一応キャンバスアプリでの画像貼り付けは出来る(Base64埋め込みで)!ということになります。

NOTE※複数行テキストは容量が多くなる前提で文字数は最大値くらいまで上げておいた方がいいです。でないと保存時にエラーが発生します。(文字数オーバーの)

キャンバスアプリ側でモデル駆動型アプリの別テーブル保持の画像は見れない!

モデル駆動型アプリの方だと別テーブルに保持してくれデータ量も抑えてくれているわけですが、同じレコードをキャンバスアプリ側で開くと画像はみれません!(アップロードしたURL指定の画像は見れる)

キャンバス側のリッチテキストエディターではそもそも別テーブルへのデータ保持自体を対応していないですし、それを参照しての表示もサポートされていないようですね。

別テーブル保持されている画像はキャンバス側だと表示されない(URLリンクの画像は見れる)

Base64埋め込みされた画像はモデル駆動型では見れる

逆にキャンバスアプリでBase64埋め込みで保存した画像はモデル駆動型アプリの方だと見れます。
もともと別テーブルへ権限がない場合はBase64埋め込みとなる仕様なので見れるのは自然ですね。

Base64埋め込みの画像はどちらもみれる

TIPSその他にもキャンバスアプリの方のコントロールだとURL指定での画像貼り付けやローカルアップロードなども対応していないですし、サイズ調整も出来ないので、モデル駆動型のリッチテキストエディターの方が高機能で使いやすいですね。キャンバスの方は画像系はいまいち。。という感じになるかと思います。

Dataverseではモデル駆動とキャンバスの併用は難あり

ということで冒頭に書いた通り、併用するとモデル駆動型アプリの方で登録した画像が見れないので、登録する場合はキャンバスオンリーであれば問題ないですが、基本併用は厳しいという感じですね。

NOTEそもそもBase64埋め込みになるので容量増加やパフォーマンス影響を考えるとキャンバスアプリでの画像貼り付けは対応しないようがベターかもしれませんね。

Dataverse for Teams はどうか!Base64で行けた!

ではDataverse for Teamsだとどうか確認しました。
結果はBase64で登録保持はできました!

ただ、列の作成時に最初リッチテキストが出てこないので複数行で作成後に列の編集でリッチテキストへ変更が必要

作成したTeams版アプリだと通常でリッチテキストエディタ‐は選択できないので、コントロールから追加が必要
(Updateの対象をこっちに調整)

でスクショした画像を貼り付けして保存!

Base64で保持されて貼り付け画像は残せました!
※最初複数行の最大値を変更してなかったのでエラーになった。最大値まで上げたらOK

という感じでDataverseよりちょっと列種別指定やコントロール指定にひと手間ありましたが、ちゃんとできました。

TIPSBase64で保持されるためデータ容量は大きくはなりますが、Dataverse for Teams版であれば(Basic(M365ライセンス範囲)画像スクショ貼り付けアプリも作れそうですね。ただ、そもそもデータ量制限が2GBまでなのでやっぱり難しいかも。。

おわりに

今回は2回に分けて複数行リッチテキストで画像貼り付け保存が出来るかの検証でした。
SPOで出来ないのは残念ですが、Dataverse for TeamsだとBasicライセンス範囲でも可能(Base64で保持)
Dataverseであればモデル駆動型なら別テーブル保持してくれる。キャンバスでもBase64で保持は可能。
ただキャンバス×モデル駆動型併用は難ありという結果でした。

Dataverse for Teams またはDataverseであれば画像スクショ貼り付けが出来るアプリも作れるのはなかなかいいですね。ただ、データ量の上限があるのでやはり厳しいとは言えますが。。
そういった要件も(よくなんかのアプリの移行などで)出てくるケースあるので、それぞれの出来る、出来ないや違いなど覚えておいて損はなさそうです。それでは!

関連記事


この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

ヨウセイ

ヨウセイ

一般職からSharePoint、C#、.NET系技術者へ、そこからPower App、Power Automate技術者へと転身。 ワンランク上のおっさんはPower Appsでシステム開発が出来る〜! qiitaや自社HPでも技術ブログを書いていました。

関連記事

コメント

この記事へのコメントはありません。

CONTENTS