あなたのチーム、こんな状況になってませんか?
- 課題:リモート・出勤が併用されてて部内の勤務状況確認できない!
- 上司「とりあえずTeamsに勤務開始・終了を報告してください」
- 部下「報告面倒いな」 Lose
- 上司「なんかみづらいな」 Lose
- 上司「とりあえずTeamsに勤務開始・終了を報告してください」
そこで、だれでもちょちょいと作れるくらいの勤怠管理ツールを考えてみました。
目指したのはとにかく最低限の機能、ちょうど出勤したら裏返す名前書いた木の札をアレみたいなのをサクッと作ってみます。
利用するもの
- PowerApps
- SharePoint(Lists)
以上!
開発の流れ
- 記録用のListsを作成
- PowerAppsで表示部を作成
- PowerAppsからListsへの書き込み部を作成
1. Lists作成
- ベースのチームを「SharePointで開く」
Teamsアプリで、みんなが参加しているチームを開き、右上のメニューからSharePoint(Web)を開きます。 - 新規「リスト」の作成
左のメニューから「サイトコンテンツ」を開き、+新規>リストを作成します。今回は「空のリスト」から作成しましょう。 - 適宜列作成、名前を変更
列の追加は列最終行から、変更は列を選択して列の設定>名前の変更からできます。今回は、「display_name」「status」をそれぞれテキスト形式で用意しましょう。 - 社員を追加
今回は勤怠管理したい社員について、列の上の「+新規」から人数分作ってしまいましょう。後から追加等する場合はこのリストから修正をしましょう。
2. 表示部作成
- 空からアプリ作成
PowerAppsのウェブページを開き、社内のOfficeアカウントでログイン、空のキャンバスアプリの作成をしましょう。Appsの作成が初めてのときは環境準備に少し時間が必要かもしれません。 - SharePointコネクタ接続でListsを取得
作成画面の一番左に各種作成メニューパネルがあるので、そこのデータベースのマーク(円柱のやつ)から「データの追加」>コネクタのSharePointで自分のアカウントを選択。チーム一覧が表示されているはずなので、リストを作成したチームを選び、リストを選択します。 - ギャラリーを追加し、リストとつなぐ
左パネルから+(追加)を選択し、レイアウト>空の垂直ギャラリーを追加します。データソースを要求されるので、作成したリストを選びましょう - 名前、ステータスを表示
クリック選択等でギャラリーが選択されている状態で、左パネルの+(追加)から、テキストラベルを2つほど追加しましょう。(おそらく何もしなくてもリストの列項目が表示されると思いますが、)上のリストボックスから「Text」を選び、フォームに「ThisItem.status」等のように記載すると、リストで作成したユーザ情報が行ごとに表示されていると思います。
多少配置、高さ調整してますが、ここまででこんな感じの画面になります。
3. 書き込み部作成
- ギャラリーに申告用ボタンを追加
続いてギャラリーを選択している状態から、+(追加)でボタンを追加しましょう。各行にボタンが追加されているかと思いますのでいい感じに配置調整し、右のプロパティの「テキスト」を変更して「出社」「自宅勤務」「退勤」の3つを追加しましょう。
Text
=出社
- onSelectでPatch記載
各ボタンで、上のリストボックスがonSelectの状態でフォームに以下にならって記載を行いましょう(てすとはリストの名前です)。これでボタンを押すとリストのstatusを書き換えられるようになります。
OnSelect
=
Patch(てすと,LookUp(てすと,ID=ThisItem.ID),{status:"出社"})
※ 出社のところを適宜ボタン名と合わせる - DisplayModeでif文作成
一応ここまでで十分機能しますが、利用者が使いやすいようにどのボタンが押せるかを条件式を使って変えてあげます。上のリストボックスからDisplayModeを選択し、以下にならって記載してください。ステータスが出社の時は出社ボタンを押せないように(すでに押されているように)見せることができます。
DisplayMode
=
If(ThisItem.status="出社",DisplayMode.Disabled,DisplayMode.Edit)
さらに工夫するなら?改善方針案!
- 本人だけが勤怠変更できるようにしたい
-
User().Email
で利用中のログイン者のメールアドレスがわかります。なので、例えばリストにe-mail列追加してメルアド管理し、DisplayModeのif条件に入れ子で入れれば、本人のみ勤務ステータス変更できるようになりますね。
-
- なんか「営業先」みたいな一言コメント残せるようにしたい
- 上記と同様、Lists列拡張してリッチにして行きましょう
- 日次の記録(ログ)を残したい
- Lists列に日付を追加し、表示は日付でfilter、書き込みは日付pickerを用意すると日付指定で入力できますね。ここまでできるようになればあなたも立派なDX職人かも?
- 毎日退勤状態にリセットしたい
- むむ、これは少し骨が折れそう。PowerAutomateで午前5時に動くものを作るとよさそう?
こんな感じでどんどん拡張改善できるので、まずはとりあえずで動くものをささっと作ってみてはいかがでしょうか?