はじめに
この記事は、Microsoft Power Apps Advent Calendar 2024 12月21日担当分の記事です。
今回はよくTeamsでやり取りする場合、スクショを取ってそのまま貼り付けて共有する。というようなことがキャンバスアプリでも出来るか。という点について記事にしました。
イメージとしては複数行テキスト(HTML化)な列を用意して上記のスクショ貼り付けが出来るかとなります。
今回も先に結論を言ってしまうと、
・SharePointリストがデータソースの場合は無理っぽい(調べた限りでは)
・Dataverseの場合は出来ます!またモデル駆動型の場合はよりリッチに出来る(保持の仕方が異なる)
※キャンバスとモデル駆動型で併用の場合は保持の仕方が異なるため基本不可。
・さらにDataverese for Teamsでも出来ます!
※キャンバスとDataverese for Teamsの場合はBase64で保持
という感じです。
今回はその②としてDatavereseを使った場合の挙動や検証についてとなります。
その①のSPOリストの場合はこちらの記事をご参考ください
はじめに この記事は、Microsoft Power Apps Advent Calendar 2024 12月21日担当分の記事です。 今回はよくTeamsでやり取りする場合スクショを取ってそのまま貼り付けて共有する。というようなことがキャンバスアプリでも出来るか。という点について記事にし...
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埋め込みで)!ということになります。
NOTE※複数行テキストは容量が多くなる前提で文字数は最大値くらいまで上げておいた方がいいです。でないと保存時にエラーが発生します。(文字数オーバーの)
キャンバスアプリ側でモデル駆動型アプリの別テーブル保持の画像は見れない!
モデル駆動型アプリの方だと別テーブルに保持してくれデータ量も抑えてくれているわけですが、同じレコードをキャンバスアプリ側で開くと画像はみれません!(アップロードしたURL指定の画像は見れる)
キャンバス側のリッチテキストエディターではそもそも別テーブルへのデータ保持自体を対応していないですし、それを参照しての表示もサポートされていないようですね。
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であれば画像スクショ貼り付けが出来るアプリも作れるのはなかなかいいですね。ただ、データ量の上限があるのでやはり厳しいとは言えますが。。
そういった要件も(よくなんかのアプリの移行などで)出てくるケースあるので、それぞれの出来る、出来ないや違いなど覚えておいて損はなさそうです。それでは!
関連記事
はじめに この記事は、Microsoft Power Apps Advent Calendar 2024 12月21日担当分の記事です。 今回はよくTeamsでやり取りする場合スクショを取ってそのまま貼り付けて共有する。というようなことがキャンバスアプリでも出来るか。という点について記事にし...
はじめに Daiさんと一緒に主催をしているコミュニティ「奇想天外ビリビリ☆Power Apps同好会」で、7/18から週一のペースで、ヨウセイ登壇の「 ナレッジ共有アプリを作ってみる ~自動生成アプリをカスタマイズから始めよう~」の登壇イベントをシリーズで開催しています!今後も適宜こちらのペ...
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント