Microsoft Dataverse for TeamsでPrint機能を検証してみた

こんばんは、5日ぶりです。

(あかん、平日書く時間ないから時間を作らねば)

 

というわけで3/26に展開されたPrint機能をDataverseで検証してみた。

 

簡単に機能の説明

とりあえずPrint機能をためしてみます。

私の拙い文章よりも

MVPの方々の文章のほうが見やすいのでとりあえず下記を見て「わかった!」ってなったらこの章は飛ばしましょう!

MVPのyamad365さんの記事↓

qiita.com

敬愛してますHiroさんの記事(はええよ!w)

mofumofupower.hatenablog.com

 

ちなみにお友達のよーよんさんも以前eventで登壇してましたのでのせときます。

www.slideshare.net

 

(もう説明いらなくない!?)

 

まぁやりますか。

ものすごい簡単ですね。


 Print()
  

 これを何らかのコントロールに仕込むだけ。超簡単わお。

ちなみに「これは写したくないなぁ」ってものは

対象のVisibleプロパティに


 Not(Parent.Printing)
  

って打てば印刷時に写しません。

まぁ他の方の資料やら見ればわかりますねぇ。。。 

フツーのブラウザアプリのほうでやってみる

f:id:hanakuso365:20210409190343p:plain

上のようなimage,label,buttonを置いて、buttonのOnSelectプロパティに

 


 Print()
  

を仕込んであげます。

そうするとブラウザの場合、以下のような画面が出てきます。

赤枠のところが縦横の設定とカラーかモノクロの設定となります。

 

f:id:hanakuso365:20210409192625p:plain

上でわかるとおり、素敵なイラストとbuttonの色が出てきません・・・

そんな時に、「その他の設定」ボタンを押しましょう。

次の画像の「背景のグラフィックス」というチェックボックスにチェックすると

f:id:hanakuso365:20210409193151p:plain

 

buttonの色と可愛い画像がでてきました。

ちなみに今回の記事はここの検証になります。

 

buttonを表示したくない場合は、buttonのvisibleプロパティに 


 Not(Parent.Printing)
  

と書いてあげれば印刷プレビューで消えていることが確認できます。

f:id:hanakuso365:20210409193635p:plain

とりあえずこんなもん。

で、思ったんですね。

「Microsoft Dataverse for Teamsだとどうなるんだろう…」


Microsoft Dataverse for TeamsでPrint機能を検証

さてメインです。

フツーにやる

はい、上の手順どおりまた配置して押してみると、

 

f:id:hanakuso365:20210410172135g:plain

まぁそうなりますよね。

システムダイアログ使用になってしまいます。

Desktopアプリだから当たり前なんですけど、これの何が問題かというと、

そう、「背景のグラフィックス」なのです。

上の動画の出力結果(pdf)がこんなん。

f:id:hanakuso365:20210410172311p:plain

 

俺がいない!!!!悲しい!!!

グラフィックが表示されないのです。

 

基本的にグラフィックとされる要素というのは、「画像」「一部の色」「背景」などビジュアルインスタンスなので、こちらに関しては印刷対象として重要なファクターとなってくると思います。

しかしながら「Teamsでは待ちに待ってた印刷機能がつかえない!」

そんな悲しいことないですよねー

ってことで考えられるパターンを試してみました。

ブラウザタブでURL仕込んで検証

ブラウザタブというのは下記画像にあるような、Teamsタブの一種です。

タブから地球のようなマークを選んでURL指定するとそのページをInframeのように表示してくれます。

こちらで検証・・・・

f:id:hanakuso365:20210410172929g:plain



失敗。

まぁ当然ですよね。Desktopアプリには変わりない( ゚Д゚)

 

プリンタを設定してみる

よし!じゃあプリンタ側の設定で、「背景のグラフィックス」っていうのをどうにか設定できないか?ってのを検証...したけど、

うん。

 

何しても映りませんでした…

私の環境はDCP-J587N

ブラザー プリンター A4インクジェット複合機 DCP-J587N (Wi-Fi対応/自動両面印刷/スマホ・タブレット接続/2020年モデル)

 

エプソン PX-M885FR2

エプソン プリンター A4 カラーインクジェット 複合機 ビジネス向け PX-M885F FAX機能つき ワークスタイル応援フェアキャンペーンモデル PX-M885FR2

 

 

結構隅々まで調べましたけど、どれもそんな設定項目が出てきませんでした。

検証失敗。。。

 

URLを叩いてみる

もうTeams諦めて、、、(この時点で検証になってないけど)

それぞれ固有で与えられているURLを直接ブラウザに書く!

f:id:hanakuso365:20210410174153g:plain

そりゃ開けますわ。

じゃあこれをTeamsから、という導線で考えると、、、、

うーん。。。

 

自分の中で早いなと思ったのはedgeの「アプリ作成」の機能。

こちらでアプリを作成してWindowsのタブに固定しておけば使いやすいんじゃないのかな?と思います。

いまのところこれが一番スッと使える。

f:id:hanakuso365:20210410174309p:plain

上の設定でDesktopのタブに登録すればスっと使える!

(使えるけどね)

Launchでパラメータ渡して別アプリで開いて即Print

はい、こちら一番テクニカルな方法です。(てくにかる?)

まずはTeams上で作成したアプリでパラメーターを指定してあげて

Launchで通常のPowerAppsstudioで作成したアプリにパラメータ引き渡して、

それをそのままPrint!

ってやればユーザー側からすると

「なんかbutton押したらブラウザがバッて開いて、印刷を促してくれた!!抱いて!」

ってなるかな?と思ったんですね。

なのでやってみた。

 

テキストをQRにしてそれを印刷する。みたいなやつを作ってみた。

よくあるURLにQRから飛ばすやつですね。

それをprintさせると案の定下のようにQRは映ってくれません。

f:id:hanakuso365:20210410192241p:plain

なのでLaunchをボタンにしこんで、

①Teamsアプリの方のボタンにパラメータ仕込んで変数を渡す

Launch("https://apps.powerapps.com/play/アプリID","渡すパラメータ名",今回はlabelのURLを指定) 

②Webで印刷用アプリを開かせてさっきのパラメータ取得してQR生成して取得したらPrint

f:id:hanakuso365:20210410193550p:plain

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する流れになると思います。

 

f:id:hanakuso365:20210410200522g:plain



 

おわりに

色々検証してはみたものの、、

結論としては

「Dataverse for TeamsでのアプリはPrintするにはまだ若い!」

という結果になるのかな?と思いました。

実際に「印刷したいの!だけどSPOじゃ嫌!しかもPowerAutomate?なにそれ?難しい!」って言う人は上記の手順を考えてもよろしいのではないでしょうか?

 

簡単な手順で作成できるのは、簡単なものだけ!

ユーザーは割と「これこれ!」って言ってました。

何が正解かは自分の環境で決めましょう。