初めに
この記事では私がPowerAppsを用いてアプリを作成する上で学んだことを記載しております。
備忘録用として記載しておりますので読みにくいなどございましたらご容赦ください。
在席確認アプリの構成について
DBはSharePointリストを用いて作成しております
以下の機能をYoutubeなどを参考&自分なりのカスタマイズで作成しました。
画面構成としては勤怠を登録する画面と登録した利用者が一覧で見れる画面の構成となります。
ステータス
ラベルにステータスが表示されるように下記の関数を記載しました
Coalesce(
First(SortByColumns(Filter(出退勤履歴, メールアドレス = User().Email && 日付 = Today()),"Created",Descending)).在席ステータス,
"まだ本日は登録していません")
勤怠を登録するボタン
このボタンを押下すると勤怠が登録されるように記載しました
※Patch関数内の部門では在席状況確認画面でドロップダウンから○○課という値を取得するため余計な部分を削除しています。
例えば「PowerAppsがんばって覚える部技術企画課」の技術企画課の部分のみ
値を取得したいなど
OnSelect=
Patch(
出退勤履歴,{
Title:GUID(),
日付:Today(),
在席ステータス:selectステータス,
メールアドレス:User().Email,
名前:User().FullName
部門:Substitute(Office365ユーザー.UserProfileV2(User().Email,{'$select':"department"}).department,
"PowerAppsがんばって覚える部",
" "
)
});
その下に更に下記を記載しました
OnSelect=Set(Selectステータス,Self.Text)
DisplayMode=If(Label1.Text<> "退勤", DisplayMode.Edit, Disabled)
出退勤履歴
在席状況を確認する
在席状況を確認するギャラリーに下記のように記載しました
Items=
GroupBy(
SortByColumns(Filter(出退勤履歴,日付=DatePicker1.SelectedDate),"Created",
Descending),列名,"grp"
)
First(ThisItem.grp).在席ステータス
First(ThisItem.grp).名前
Back()
Reflesh(出退勤履歴)
Navigate(Screen2)
ユーザーのアイコンを他ユーザーがログインしても表示させたい
ギャラリー内にユーザーのアイコンが表示されるように図を追加し、そこに下記のように関数を記載しました。
If(
!IsBlank(ThisItem.Email),
If(
Office365ユーザー.UserPhotoMetadata(ThisItem.Email).HasPhoto,
Office365ユーザー.UserPhotoV2(ThisItem.Email),
),
SampleImage
)
ステータス状態を色分けしたい
出社時は緑色、在宅は黄色、休みは赤色のように区別したいので
ラベルを追加して下記のように記載しました。
Switch(First(ThisItem.grp).在席ステータス,"出社",Green,"在宅",Yellow,"退勤",Red)
もしくは
If(
First(ThisItem.grp).在席ステータス ="出社",Green,
First(ThisItem.grp).在席ステータス ="在宅",Yellow,
First(ThisItem.grp).在席ステータス ="出社",Red
)
ドロップダウン
在席確認画面ではドロップダウンで課&日付を選択すると
その日に出社or在宅or休みされている方を表示されるようにカスタマイズしております。
課ごとに表示される
○○課ごとにステータス状態を確認したいため
テーブル内の部門から値を取得しました
※勤怠登録でPatch関数内で部門情報を調整したのはこのため
日付
過去の状況を確認したい時に選択できるように追加しました
所感
作成する上で苦労したこと
1.在席確認画面でドロップダウンに○○課を選択するとそれに紐づいた画面を表示させること
2.他ユーザーが見てもユーザアイコンが表示されること
対策
勤怠登録ボタンにPatch関数内で部門情報を取得(余計な情報を取り除いた上で)するという考えに至るまで時間がかかりましたが何とか自分がやりたい事が実現しました。
まとめ:アプリを作成する上で学んだこと
1.Patch関数内で部門情報を取得するときの方法
2.ユーザーアイコンを取得するときの方法