インテージテクノスフィア技術ブログ

株式会社インテージテクノスフィアの社員達がシステム開発や仕事に関する技術情報を随時掲載いたします

Teamsに勤怠報告を自動投稿できるかな

こんにちは、アイダです。当社は、元々VBAやマクロを駆使した業務効率化を業務や部署全体で実施することが多く、業務用のVBA専用部署があるくらいです。そんな中で数か月前に導入されたMicrosoft 365。特にPower Automate を積極的に利用し始めた方が増加中です。(アイダも始めました) 今回は医薬サービスビジネス部のSさんがチャレンジした内容をご紹介します!Sさん宜しくお願いします。

f:id:intage-tech:20201029131941j:plain

はじめに

こんにちは。医薬サービスビジネス部のSです。お誘いを受けて、今回担当させていただくことになりました。業務でひとつも関数を宣言したことがない私は「技術探究委員会」という名称に、完全にびびりながら記載内容を検討しました。

先日社内でアイダさんが Teams と Power Automate を使って「特定のメールが届いたら Teams に自動投稿」する機能を実装されていましたが、その投稿をみてある方が「勤怠報告を自動化したい」とつぶやかれてました。 それを見て「せっかくだからプログラミングして実装するぞ!」と思っていましたが、「Power Automate」という便利なものを知り、「ノンプログラミングでもできた!」というコンセプトに方向転換しました。

事前準備1

まずは、やりたいことを整理しました

  • トリガー:勤務開始
  • アクション:Teamsにメッセージを自動投稿する。
  • メッセージに記載したい内容:
  • 出社か在宅勤務か

    勤務予定時間  → 例:本日は在宅勤務です。勤務時間は09:00~18:00の予定です。

  • アクションの実行方法

    → 「Teams 自動投稿」ってググったら、「Flow」ってやつがめっちゃ出てくる。これ使おう。

    → Outlookのアプリメニューに出てこなくて困っていたら「Power Automate」に名前が変わっていた。(アイダさんの記事を早く拝見していれば…)

  • トリガー(勤務開始)の判断方法

(案1)PCの電源を入れたら → 難しそうなので却下

(案2)VPN接続したら、または、社内LANに接続したら → SSIDってどうやって取得するのかな…却下

(案3)Outlookの予定表の勤務開始時間になったら → 「Power Automate」でできる!(妥協、、、ではない)

事前準備2(Outlookの予定表へイベントを登録)

トリガーの判断方法について「(案3)Outlookの予定表の勤務開始時間になったら」を採用したため、前提として、Outlookの予定表にイベント登録が必要です。

(会社のルールとして勤務時間のスケジュール登録は必須)

Teamsに投稿するメッセージに記載したい内容を盛り込む必要があるので、以下の登録ルールとしました。

1.勤怠報告に関係あるイベントと判断できる件名にする

 → イベント名は「勤怠」と設定する。

2.出社か在宅勤務か判断できるようにする

 → ロケーションに「出社」または「在宅勤務」と設定する。

3.勤務時間がわかるようにする

 → イベントの開始・終了時刻に、予定勤務時間を設定する。

こんな感じ

設定方法1(トリガーの設定)

1. Outlookのメニューから「Power Automation」を選択して開く。

2. メニューの「作成」から「自動フロー」をクリックする。

3. フロー名に好きな名称を入力する。

4. 「トリガーを選択してください」に「予定しているイベントが間もなく開始されるとき(V3)」を指定して、「作成」ボタンをクリックする。

f:id:intage-tech:20201027105845p:plain

5. 「カレンダーID」のプルダウンから「予定表」を選択する。

f:id:intage-tech:20201027105930p:plain

6. 「新しいステップ」をクリックして、表示された中から「コントロール」をクリックする。表示された中で「条件」を選択する。

7.「値の選択」にフォーカスすると、選択肢が表示されるため、「件名」を選択する。

8. 在宅のときだけTeamsに投稿した場合は、以下の条件も追加する。

設定方法2(アクションの設定)

「はい」の場合、Teamsに自動投稿する。

1. 「アクションの追加」をクリックする

2. 「メッセージを投稿」等で検索して出てきた「メッセージを投稿する(V3)」を選択する。

3. プルダウンから「チーム」と「チャネル」を選択する。

4. 「メッセージ」に投稿したいメッセージを入力する。

5.「場所」と「時間」は、その日の予定に合わせて動的に変更する必要があるため、パラメータに変更する。

5-1. 「メッセージ」欄にカーソルをあてるとパラメータを選択できる。

5-2.「在宅勤務」を、Outlookのイベントの「場所」から取得する。

5-3.「09:00~18:00」(勤務予定時間)を、Outlookのイベントの「開始時間」と「終了時間」から取得する。

5-4.「検索」欄に、取得したい値を入力すると選択肢がでてくるので、クリックすると本文に反映される。

5-5.タイムゾーンを変換する

「開始時刻」と「終了時刻」がデフォルトのままだと、「(UTC)協定世界時」になってしまい、

「(UTC+9:00)大阪、札幌、東京」へ変換が必要なため、「動的なコンテンツ」の「式」に以下を設定します。

開始時刻:{convertTimeZone(triggerBody()?['start'],'UTC','Tokyo Standard Time','HH:mm')}

終了時刻:{convertTimeZone(triggerBody()?['end'],'UTC','Tokyo Standard Time','HH:mm')}"}]}

f:id:intage-tech:20201027110511p:plain

「いいえ」の場合、何もせずに終了する。

1. 「アクションの追加」をクリックする。

2. 「コントロール」の中の「終了」をクリックする。

3. 「状態」を「成功」を選択する。

4. 画面一番下の「保存」ボタンをクリックする。

5. 以後、メニューの「マイフロー」に表示されるようになる。

おわりに

「トリガー」や「アクション」でどんなことができるか知っていく中で、Outlookの予定表のイベントで、どこに何を設定するかを少しずつ変えていきました。

システムの中身を知ることで要件が変わる、システムに運用を合わせる等を実体験し、なんだか、顧客との要件定義に思いを馳せました。

ノンプログラミングでもRPAを実践できるのは、画期的だと思いました。これを自動化できないかな?という発想を常に持つことが何より大事ですね。

そもそもPower AutomateはRPAなのか?については、以下をご参照ください。「Power Automateの一部の機能はRPA」という考え方のようです。

  • Microsoft Power Automateと今までのRPAとの違い・比較ポイント

memo.tyoshida.me

  • Power Automateとは? 特徴~勉強方法まで解説!

rpahack.com

この投稿を皆さんは、すでに色々なものを実装されているかと思いますので、こんなやり方↑じゃなくて、もっとスマートなやり方がある等、叱咤激励いただければ幸いです。

無理に技術っぽい話ではなく、営業とかイントレプレナーとかビジネスモデルの話の方がやっぱりよかったかなぁ、、、と感じつつ、色々試してみたり、調べてみたり楽しめました。

ご覧いただき、ありがとうございました。