こんにちは、あんこ先生です。
別記事で作成したチェックリストアプリ、最低限の機能は備えていますが使いにくいですよね。
このままリリースしたら袋たたきされ、導入計画がとん挫しかねません。
でもあれこれ機能追加するのってたいへんなんでしょ?
いいえ、PowerAppsならかんたんに機能追加できます。
さすがに事前知識もなく望む動作をさせるのは無理がありますが、コピペで再現することはできます。
そこで今回は、「チェックリストをもう少し使いやすくしたい」、「できればコピペでなんとかしたい」という初心者を対象に、チェックリストアプリの加工方法を紹介します。
コピペするだけでも、どこを変えたらどんな動作になるのか理解が深まりますよ!
たぶん30分くらいで完成します。
Contents
チェックリストアプリを少し使いやすくする方法
結論から伝えると、便利な機能はコントロールのプロパティにコードを記載すれば実現できます。
今回は使い勝手を良くするため、次の5点を追加していこうと思います。
- 実施日の初期値を当日にする
- 実施者をアプリユーザーに固定する
- トグル押下時の枠削除
- トグルの判定を広げる
- 実施結果を通知する
とりあえずこの5点を組み込めば相当使い勝手はよくなります。
ユーザーは入力項目が減りますし、操作ミスも減りますよね。
結果が通知されれば、管理者もわざわざデータを見に行かなくてよくなりますね。
これがWin-Winってやつです。
それではひとつずつ機能を追加していきましょう。
ユーザーの負担を軽減する│チェックリストアプリの機能追加
実施日の初期値を当日にする
当アプリは毎日実施するチェックリストを想定しています。
つまり、実施日=当日ですよね。
そこで実施日の初期値を当日にしておけば、ユーザー操作をひとつ省略できます。
設定もかんたん、日付の選択にToday関数をひとついれるだけです。
//DataCardValuex.DefaultDate
Today()
これで初期値が当日になりましたね。
実施者をアプリユーザーに固定する
次に実施者の項目です。
ここも実施者=ユーザーですよね。
たまにデバイス貸して!とお願いされるケースもありますが、基本ユーザーとデバイスは紐づけて運用しましょう!
ユーザー情報を取得するには、Office365ユーザーコネクタが必要です。
データソースの追加から探して接続しましょう。
コネクタの接続が終わったら、テキスト入力のコードを下記に置き換えます。
//DataCardValuex.Default
Office365ユーザー.MyProfileV2().displayName
もし何も表示されなかったり、会社名も入っていたりした場合は次のコードを試してください。
//DataCardValuex.Default
Office365ユーザー.MyProfileV2().surname&Office365ユーザー.MyProfileV2().givenName
うまく表示されましたか?
実施者を変更できないようにする
せっかくユーザー名を表示できるようにしたのに、操作ミスやなりすましされたのでは意味がありません。
表示モードをビューに変更すれば、そういったリスクを回避できます。
トグル押下時の枠削除
コントロールを押したよって知らせるために枠線が表示されます。
表示されても機能は損なわれませんが、気になりますよね?
消し方はかんたん、枠の色を無色にするだけです。
下記のとおり、もともとの数式を消して、一度適当な色を選んでから無色で確定してください。
数式が空欄だと0、すなわち黒色として処理されるよ。
必ず無色を選びましょう!
トグルの判定を広げる
トグルの押下判定はそのサイズと合致します。
そのため、トグルの幅を広げれば判定もそれに倣います。
ただし、幅も広げるとラベルの位置を動いてしまい不格好です。
そのため、トグルのラベルは非表示にして、別途文字表示のためのラベルを追加します。
非表示はとてもかんたん、下図をオフにするだけです。
次にラベルを適当な位置に配置し、コードを記述します。
コードは下記をそのままコピペしましょう。
//Labelx.Text
If(DataCardValue3.Value,"はい","いいえ")
これでトグルのオン・オフに応じてラベルの文字が切り替わります。
ただし、トグルの上にラベルが載っているためその部分だけ押下判定がなくなります。
図のようにレイヤー順を逆転させましょう。
これを質問の数だけ繰り返せば完成です。
管理者の負担を軽減する│チェックリストアプリの機能追加
実施結果を通知する
チェックリストの実行結果がメールで届いたら、管理する側はとても便利ですよね。
いつ、だれが実施したかわかるし、わざわざ内容を見に行く必要がありません。
そのため、保存と同時にメール通知する機能を追加します。
メール本文はHTMLだと見栄えがよいのですが、メールを送らないとどのように表示されたかわかりません。
そのため、一度HTMLテキストを経由して本文を作成します。
普通に設置すると邪魔なので、画面外に移動させておきます。
HTMLテキストのXを640にすれば画面外に追いやれますよ。
あとは下記コードをコピペしてください。
うまく表示されない場合は、DataCardKeyの数字部分で調整してください。
//HtmlTextx.HtmlText
DataCardKey2.Text&" "&DataCardValue2.SelectedDate&"<BR>"&
DataCardKey1.Text&" "&DataCardValue1.Text&"<BR><BR>"&
DataCardKey3.Text&"<BR> "&Label1.Text&"<BR>"&
DataCardKey4.Text&"<BR> "&Label2.Text&"<BR>"&
DataCardKey5.Text&"<BR> "&Label3.Text&"<BR>"&
DataCardKey6.Text&"<BR> "&Label4.Text&"<BR>"
次にメールを送る機能ですが、これはOffice365Outlookコネクタが必要です。
データソースの追加から探して接続しましょう。
あとはボタンのコードを置き換えます。
//Buttonx.OnSelect
SubmitForm(Form1);
Office365Outlook.SendEmailV2(
"information@anko7793.com",
// Office365ユーザー.MyProfileV2().mail, //自分に返す場合
"チェックリスト実施結果通知",
HtmlText1.HtmlText
);
NewForm(Form1);
SendEmailV2は3つの引数が必要です。
ひとつめが宛先です。文字列で与えるので””で囲みます。
ふたつめはメールタイトルです。ここも文字列です。
みっつめはメール本文です。HTMLテキストをそのまま与えます。
これでボタンを押せば、チェックリストの実施結果が保存されるとともにメール通知されます。
便利度跳ね上がりですね。
チェックリストアプリを少し使いやすくする方法
今回は、ユーザーと管理者が幸せになれる便利機能を追加する方法を紹介しました。
応用すれば他のコントロールでも同じようなことができますよ。
例えば日付も変更させたくなければ、表示モードをビューに指定すれば実装できます。
あれこれ試して、少しずつ機能を充実させてみてください。
次回は、このアプリに例外処理対策を施していきます。
続きはこちらの記事をどうぞ。(作成中!)
このアプリは何回かに分けて少しずつ機能を強化していきます。
前回の記事でアプリを作成してから読み進めてください。