[Teamsと連携!] 皆の勤務状況を一覧で見たい！

## 在宅？出社？休暇？パッと見たい！
コロナ禍とその長期化から、在宅勤務とオフィス出社が今まで以上に混在するようになってきました。
それに伴い、「誰がいつ、どこで働いているのかを、カレンダー形式で、パッと見直感的に知りたい」というご要望も増えてきているように感じます。
今回は、Microsoft 365に含まれる、Microsoft Teams(以下Teams）、Microsoft Power Automate（以下Power Automate）、Microsoft Forms(以下Forms）、SharePoint Onlineのリスト、そして「承認」を使った、簡単な仕組みをご紹介します。
追加のライセンスをご用意頂く事なく、出来るだけ簡単に作成してみましたので、是非お試し下さい。
↓完成形イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/b701bf93-5fa9-d319-536d-768db91df885.png)

### シナリオ全体の流れ
今皆さんは、ご自分の勤怠をどのように報告していますか？メールで上司に許可を得たり、チャットで個別に連絡をしたり、Excel表で管理されているケースもあるかも知れません。そのような申請作業をFormsで一元化し、承認はTeamsの承認アプリにまとめ、承認されたものだけをチームで見る事が出来るようになれば便利ですよね。
このような流れになります：
Formsを使って、勤怠を申請
↓
承認者に申請が届く（Teamsの承認アプリ経由）
↓
承認されると、チームのリストにカレンダー形式で反映され、皆が参照出来るようになる
それでは早速作っていきましょう。

### 勤怠を共有するためのチームとチャネルを決める
まず、勤怠情報を共有するためのチームとチャネルを決めましょう。
今回は、「Retail」チームの「勤怠管理」チャネルを使います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/474d65d2-72a2-2ec2-552b-c15ff5e4beca.png)
### Formsを作る
次に、勤怠申請をする入り口となるFormsを作りましょう。おなじみとなった、[Formsのページ](https://www.office.com/launch/forms)から新規のFormを作ります。
例えば以下のように、勤務状況の選択、そして開始日と終了日を入力出来るようにしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/0ce9411e-d795-0586-3155-eecbd5ce8056.png)
### 提出された勤怠を保存するための「リスト」を作る
次に、Formsから入力され、承認された勤怠を保存するためのSharePointリストを作成します。先程決めた、「Retail」チームの「勤怠管理」チャネルにリストのタブを追加します。チャネルを選択した状態で、右上の「＋」マークをクリックすることでタブが追加出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/df692c98-571e-bebd-4203-ecf7ec2b858d.png)
環境によって、表示される内容は変わりますが、その中の「Lists」を選択して保存します、虹色のアイコンです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/501e38c7-5a25-47b5-3443-d1ecd2beed99.png)
「リストの作成」[このタブ用に新しいリストを作成する]を選択すると、以下のようなテンプレートが提案されます。ゼロから作ってももちろんいいのですが、利用できそうなテンプレートとして、「イベントの日程」がありますので、それを使ってみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/45ded3b7-3553-4f5c-b390-0010a42574f7.png)
テンプレートを基に新しいリストを作っていきます。名前は「勤務表」とし、説明に「チームメンバーの勤務状況」と入力します。色とアイコンを適当に選び、作成完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/222bd65d-a111-0c4e-20eb-9a58de27e68c.png)
次に、タブにつけたリストの見え方を編集します。表示は、カレンダー形式で見せたいので、右上の「イベントの日程」プルダウンリストから「新しいビューを作成する」を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/5ca68470-b4a4-1e53-3503-7dd05557f744.png)
ビュー名にはわかりやすく「カレンダー形式」とつけ、表示方法を「予定表」にします。予定表の開始日は「開始日時」を選び、予定表の終了日は「終了日時」を選びます。また、皆で見えるように「これをパブリックビューにする」にチェックを入れたら、「作成」を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/50c8342b-bd14-148f-423f-97664f3ad7b0.png)
これで、カレンダー表示のリストビューが出来ました。
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/a99add31-9268-c24d-44e6-b981671ab296.png)
次に、このカレンダー表示ビューを毎回デフォルト表示としたいので、「現在のビューを既定値として設定」を選んでおきます。これで、「勤務表」タブを選択した人は、毎回カレンダー表示のリストが見えることになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/1c8c51f7-3c6c-e050-2380-49174d3cd005.png)
最後に、リストの列の設定を少し変更するために、このリストをSharePoint Online側で編集します。「新しいアイテム」ボタンの横にある「…」から「SharePointで開く」を選択するとブラウザでSharePoint Onlineが起動し、作成したばかりの「勤務表」リストが表示されます。(見え方が違う場合は、右上の「イベントの日程」のプルダウンを選び、グリッドビューに変えてから編集します）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/dd3b3205-97da-b79a-926d-cfe35e1488eb.png)
このリストの列のうち、「開始日時」を選び、「列の設定」から「編集」を選ぶと、列のより詳細なプロパティを編集することが出来ます。この細かい設定はTeams側からは現在編集出来ないため、SharePoint Online側で実施する必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/9223e4ed-1c85-f610-457b-29bffa08ca85.png)
「開始日時」の列の「時間を含める」のトグルをオフにして、「いいえ」に変えます。これは、申請する勤怠は一日単位で申請する前提にしており、何時に開始する、などという時間の設定は不要なためです。同じように「終了日時」の列も編集し、「時間を含める」トグルをオフに変更しておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/e48c5ca2-8824-fcc4-8387-5997750b92f7.png)
### Power Automateを作成する
さて、いよいよPower Automateの作成に入っていきましょう。お手軽をモットーにしている本シリーズですから、こちらもテンプレートを利用していきます。まず[Power Automateのページ](https://japan.flow.microsoft.com/ja-jp/)に移動し、「承認　フォーム」で検索すると、「承認を得るためにフォームの回答を送信する」というテンプレートがヒットするので、「続行」ボタンを押して使っていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/6ca7cc91-ee5e-fa1c-979a-518cfd7e00ce.png)
Formsに新しい勤怠申請があったら、承認を発動し、承認されたものをSharePointのリストに入れていくフローです。まず、先程作ったFormsの名前「勤務申請フォーム」をプルダウンから選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/9706b8b2-dc94-5baa-c89f-0034cd44c86c.png)
次に、申請者の名前を取得するために、一つだけ新しいステップを追加します。「Apply to each」の中の「Get response details」の直後に、「＋」マークを押して、新しいステップ「アクションを追加」を挿入します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/f92b94a6-2a37-5630-b2da-87923248a69a.png)
どのような操作を追加するかを指定するために、「ユーザー」と検索をし「Office 365 Users」（または類似のもの）を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/ae8ea734-1d9a-056e-1cd5-df846f1a69cf.png)
その中に「ユーザープロフィールの取得 V2」というものがあるので、それを選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/af286762-0762-e28f-449f-2aefc2c06362.png)
Formsから直接取れるのは回答者のメールアドレスだけですが、このステップを挟む事で、メールアドレスだけではなく表示名を取得することが出来るようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/aa508236-9efe-4f92-05c2-42051d2f5c88.png)
その次のステップとなるテンプレートは、いよいよ「承認」部分です。タイトルは「勤怠の承認です：」とし、前のステップで取得できる「表示名」を入れます。これで申請者の表示名が承認のタイトルに入る事になります。
「担当者」は、承認を判断する人のメールアドレスです。通常は上司のメールアドレスなどが良いでしょう。今回はMeganBさんを承認者として指定しています。
「詳細」には、Formsの一問目で選択したラジオボタンの勤怠を入れ、開始日と終了日も入れておきます。
そして「要求元」は、Formsに回答した人のメールを入れておきましょう。下の画像を参考にしてみて下さい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/1db973b6-a322-85f7-2753-aaeff10b0d04.png)
動的なコンテンツに、欲しいものが表示されない時は「もっと見る」を押すことで出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/04375da7-df6b-8a8b-9360-c5b09eee309d.png)
承認が無事に許可された場合は、リストに勤務状況を追加します。「Retail」チームの「勤務表」リストにアイテムを追加することになりますから、サイトのアドレスとリスト名をそれぞれプルダウンから選びましょう。
アイテムの名前は「Title」に入れますが、Formsの一問目の勤怠と申請者の名前を入れます。
開始日時と終了日時にも、Formsからの入力をそのまま入れます。時間部分は先程トグルでオフにしているので、時間は入りません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/9afe7154-dac1-40e6-8983-372d787d36b9.png)
承認が却下された場合は、その旨申請者にメールを飛ばすようなテンプレートになっていますので、必要に応じてそちらも設定して下さい。この記事ではそこは省略します。
## Formsをウェブサイトとしてタブ追加
全体をテストする前に、勤怠申請のFormsを、Retailチームの勤怠管理チャネルに貼り付けておきましょう。これで勤怠申請もチームメンバーの勤怠状況も、このチャネルに一元化された事になりますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/34a210cb-2f88-4243-f16d-dd0964a7e445.png)
貼り付ける時に、「Forms」として貼り付けるのではなく、ウェブサイトとして貼り付けた方が利用者用の見え方だけになるので、利便性は高くなると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/5b11f932-39cc-da29-44be-4afd3d8a3b49.png)
## いざ利用開始
まず、Alexさんが在宅勤務の申請をします。勤怠管理チャネルのタブ「勤怠申請」をクリックすると表示されるFormsから在宅勤務の申請を行います。「送信」を押してフォームを提出します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/fd4d7722-7352-1173-d2ba-d6811171d97f.png)
送信が完了すると、Power Automateの中で指定した承認者である、MeganさんのTeamsにAlexから承認要求が来た旨の通知が届きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/995dcbe8-f390-3108-2021-c83112cf3fa1.png)
承認者Meganの「アクティビティ」に通知が届いているのでクリックすると、Alexからの承認が届いていることが確認出来ます。ここで表示される「勤怠の承認です」という文字列と、Alexの名前は先程のPower Automateで指定した部分ですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/bbd918c4-05d5-214d-64cf-854864d464ca.png)
中身を確認すると、Alexが、特定の期間在宅勤務をしたいという申請だとわかりますので、適切なコメントを入力し「承認」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/5032999b-5ef1-b506-e70c-3f175faf8453.png)
承認ボタンがMeganによって押されると、Alexにも、無事承認された旨通知が届き、共有のカレンダー表示されたリスト「勤怠表」にAlexの在宅勤務アイテムが追加されたことがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/d3f6cdff-f925-b31d-4214-7ec21d209fa3.png)
同じように、今度はNestorが出社申請をしてみましょう。「勤怠申請」Formsから出社日を申請し、それが承認されるとカレンダー形式に追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/96e22958-262d-58d0-c526-87657d0c84c2.png)
承認者であるMeganは、Alexの勤怠とNestorの勤怠の承認を、Megan本人のTeams承認アプリから一括で確認することが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/1681e46e-60f4-b9ba-f808-40cfc03d630f.png)
何人かの申請・承認が行われると、下の図のように、複数のメンバーの勤怠が表示されるようになりました。このリストはパブリックになっているので、チームメンバー全員から参照することが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1516172/b701bf93-5fa9-d319-536d-768db91df885.png)

## まとめ
「チームのメンバーが、いつどんな勤怠なのかをカレンダー表示したい」というご要望と、その勤怠を申請時に上長の承認プロセスを通す仕組みをご紹介しました。
Teamsの勤怠管理チャネルに、申請Formsとカレンダー表示させたリストをタブ付けする事で、勤怠の申請もスムーズに行えますし、承認アプリを通すことで承認者も過去の承認履歴や、未承認のリクエストを管理しやすくなります。
Formsでの申請をした際に、チャネルへの投稿を追加してもいいかもですね。
簡単に試せる仕組みですので、ぜひ動かしてみて下さい。

本シリーズの目次はこちら：
https://qiita.com/Asuka_Nagamine/items/e94131a2be4878b65deb