こんばんは、5日ぶりです。
(あかん、平日書く時間ないから時間を作らねば)
というわけで3/26に展開されたPrint機能をDataverseで検証してみた。
簡単に機能の説明
とりあえずPrint機能をためしてみます。
私の拙い文章よりも
MVPの方々の文章のほうが見やすいのでとりあえず下記を見て「わかった!」ってなったらこの章は飛ばしましょう!
MVPのyamad365さんの記事↓
敬愛してますHiroさんの記事(はええよ!w)
ちなみにお友達のよーよんさんも以前eventで登壇してましたのでのせときます。
(もう説明いらなくない!?)
まぁやりますか。
ものすごい簡単ですね。
Print()
これを何らかのコントロールに仕込むだけ。超簡単わお。
ちなみに「これは写したくないなぁ」ってものは
対象のVisibleプロパティに
Not(Parent.Printing)
って打てば印刷時に写しません。
まぁ他の方の資料やら見ればわかりますねぇ。。。
フツーのブラウザアプリのほうでやってみる
上のようなimage,label,buttonを置いて、buttonのOnSelectプロパティに
Print()
を仕込んであげます。
そうするとブラウザの場合、以下のような画面が出てきます。
赤枠のところが縦横の設定とカラーかモノクロの設定となります。
上でわかるとおり、素敵なイラストとbuttonの色が出てきません・・・
そんな時に、「その他の設定」ボタンを押しましょう。
次の画像の「背景のグラフィックス」というチェックボックスにチェックすると
buttonの色と可愛い画像がでてきました。
ちなみに今回の記事はここの検証になります。
buttonを表示したくない場合は、buttonのvisibleプロパティに
Not(Parent.Printing)
と書いてあげれば印刷プレビューで消えていることが確認できます。
とりあえずこんなもん。
で、思ったんですね。
「Microsoft Dataverse for Teamsだとどうなるんだろう…」
Microsoft Dataverse for TeamsでPrint機能を検証
さてメインです。
フツーにやる
はい、上の手順どおりまた配置して押してみると、
まぁそうなりますよね。
システムダイアログ使用になってしまいます。
Desktopアプリだから当たり前なんですけど、これの何が問題かというと、
そう、「背景のグラフィックス」なのです。
上の動画の出力結果(pdf)がこんなん。
俺がいない!!!!悲しい!!!
グラフィックが表示されないのです。
基本的にグラフィックとされる要素というのは、「画像」「一部の色」「背景」などビジュアルインスタンスなので、こちらに関しては印刷対象として重要なファクターとなってくると思います。
しかしながら「Teamsでは待ちに待ってた印刷機能がつかえない!」
そんな悲しいことないですよねー
ってことで考えられるパターンを試してみました。
ブラウザタブでURL仕込んで検証
ブラウザタブというのは下記画像にあるような、Teamsタブの一種です。
タブから地球のようなマークを選んでURL指定するとそのページをInframeのように表示してくれます。
こちらで検証・・・・
失敗。
まぁ当然ですよね。Desktopアプリには変わりない( ゚Д゚)
プリンタを設定してみる
よし!じゃあプリンタ側の設定で、「背景のグラフィックス」っていうのをどうにか設定できないか?ってのを検証...したけど、
うん。
何しても映りませんでした…
私の環境はDCP-J587N
ブラザー プリンター A4インクジェット複合機 DCP-J587N (Wi-Fi対応/自動両面印刷/スマホ・タブレット接続/2020年モデル)
エプソン PX-M885FR2
エプソン プリンター A4 カラーインクジェット 複合機 ビジネス向け PX-M885F FAX機能つき ワークスタイル応援フェアキャンペーンモデル PX-M885FR2
結構隅々まで調べましたけど、どれもそんな設定項目が出てきませんでした。
検証失敗。。。
URLを叩いてみる
もうTeams諦めて、、、(この時点で検証になってないけど)
それぞれ固有で与えられているURLを直接ブラウザに書く!
そりゃ開けますわ。
じゃあこれをTeamsから、という導線で考えると、、、、
うーん。。。
自分の中で早いなと思ったのはedgeの「アプリ作成」の機能。
こちらでアプリを作成してWindowsのタブに固定しておけば使いやすいんじゃないのかな?と思います。
いまのところこれが一番スッと使える。
上の設定でDesktopのタブに登録すればスっと使える!
(使えるけどね)
Launchでパラメータ渡して別アプリで開いて即Print
はい、こちら一番テクニカルな方法です。(てくにかる?)
まずはTeams上で作成したアプリでパラメーターを指定してあげて
Launchで通常のPower Apps studioで作成したアプリにパラメータ引き渡して、
それをそのままPrint!
ってやればユーザー側からすると
「なんかbutton押したらブラウザがバッて開いて、印刷を促してくれた!!抱いて!」
ってなるかな?と思ったんですね。
なのでやってみた。
テキストをQRにしてそれを印刷する。みたいなやつを作ってみた。
よくあるURLにQRから飛ばすやつですね。
それをprintさせると案の定下のようにQRは映ってくれません。
なのでLaunchをボタンにしこんで、
①Teamsアプリの方のボタンにパラメータ仕込んで変数を渡す
Launch("https://apps.powerapps.com/play/アプリID","渡すパラメータ名",今回はlabelのURLを指定)
②Webで印刷用アプリを開かせてさっきのパラメータ取得してQR生成して取得したらPrint
OnStart=If(!IsBlank(Param("parameter_test")),Set(launch_url,Param("さっき渡したパラメータ名")),Set(launch_url,""));
Set(gvQRdata,launch_url)
※この時On~でPrintまで行っちゃうと、画像表示される前にPrintが掛かっちゃうので、TimerのAutoStartプロパティにtrue、EndプロパティにPrint仕込んでおくと、画像表示までのディレイ制御できますので、きちんと画像表示後にPrintする流れになると思います。
おわりに
色々検証してはみたものの、、
結論としては
「Dataverse for TeamsでのアプリはPrintするにはまだ若い!」
という結果になるのかな?と思いました。
実際に「印刷したいの!だけどSPOじゃ嫌!しかもPower Automate?なにそれ?難しい!」って言う人は上記の手順を考えてもよろしいのではないでしょうか?
簡単な手順で作成できるのは、簡単なものだけ!
ユーザーは割と「これこれ!」って言ってました。
何が正解かは自分の環境で決めましょう。