はじめに

イーストでは休暇申請時に以下のタスクを行います。

  • TeamSpiritで休暇申請する。
  • Outlookのスケジュールに休暇を登録。

また所属部署によっては上記に追加して必要なタスクがあります。
筆者の所属部署では以下のタスクを行っています。

  • Teamsの所属部署チームの予定連絡チャネルに休暇連絡を投稿する。

事前に予定している休暇に関しては上記のタスクをそれぞれ行いますが、当日の体調不良や急用によって休む場合、PCを開いてタスクをそれぞれ行うのが手間に感じていました。
そのためスマホアプリで確認できるTeamsから内容を入力してボタンを押すだけで申請、スケジュール登録、Teamsへの投稿ができるようにPower AppsとPower Automateで実現したいと思いました。
今回は手始めにOutlookへのスケジュール登録と投稿したいチャネルを選択してTeamsへのメンション投稿をできるようにします。

仕様

  • Power AutomateでOutlookへのスケジュール登録とTeamsへのメンション投稿を行うフローを作成する。
    • Teamsへの投稿は以下の定型文で投稿する。
      • タイトル

        [休暇の種類]:[日付(月/日)]

      • 本文

        [チャネルのメンション] [日付(月/日)]は[休暇の種類]をいただきます。
        [補足事項]

  • Power Appsで、以下を選択・入力してボタン押下でPower Automateのフローを呼び出す。
    • 休暇の種類
      全日有給or午前半休or午後半休
    • 休暇する日
      突然の休暇を想定しているため期間指定はできない。
    • 投稿したいチャネル
      連動ドロップダウンにしてチームを選択後、チャネルを選択する。
    • 補足事項(任意)
      補足事項がある場合は記載する。記載がない場合は定型文のみの投稿となる。

実装

1.PowerAutomateでフローを作成する


フロー名は”ScheduleVacation”という名前で作成しました。

1-1.スケジュール登録処理

PowerAppsをトリガーとして作成します。
Outlookへのスケジュール登録には予定表IDが必要なのでカレンダーを取得します。取得したカレンダーは配列になっているため抽出し、予定表IDを取得します。
Outlookコネクタを使用して取得した予定表IDを指定してスケジュールを登録します。 PowerAppsから引数として渡す予定のイベント名、開始時刻、終了時刻、終日予定フラグを設定します。



失敗した場合はPowerAppsのコネクタを使用してPowerAppsに処理結果が失敗したことを伝えます。

1-2.メッセージ投稿

Teamsコネクタを使用して任意のチャネルに投稿できるようにします。
チャネル名でメンションができるように「HTTP要求を送信する」でデータを設定してjsonを送信します。PowerAppsから引数として渡す予定のチームID、チャネルID、チャネル名、休暇の種類、日付、補足事項を設定します。 日付はあらかじめ月日のみ抽出しておきます。



投稿が成功したらPowerAppsのコネクタで成功したことを伝えます。 失敗した場合はスケジュール登録と同じように処理結果が失敗したことを伝えるようにします。

2.PowerAppsでアプリを作成する

2-1.選択・入力フォームの配置


休暇種類、日付け、チームとチャネル、補足事項のフォームを用意します。
休暇種類のドロップダウンは詳細設定のItemsに設定します。


日付けはデートピッカーを使用します。

チームとチャネルの連動ドロップダウンを作成します。
データにMicrosoftTeamsを追加します。まず最初のドロップダウンのItemsに以下を設定します。

MicrosoftTeams.GetAllTeams().value

Defaultプロパティには選択肢の1番目が選択されている状態にしたいので以下を設定します。

First(MicrosoftTeams.GetAllTeams().value).displayName

上記の記述でアプリ操作者が参加しているチームの一覧が取得できます。

2番目のドロップダウンのItemsに以下を設定します。

If(!IsBlank(teamList.Selected.id), MicrosoftTeams.GetChannelsForGroup(teamList.Selected.id).value)


GetChannelsForGroup()には最初のドロップダウンで選択したチームIDを設定します。 PowerAppsの起動時、すべてのコントロールを一度にロードするため、チーム選択のドロップダウンが選択状態にならずエラーが発生します。それを回避するため、teamList.Selected.idが空の状態でないのを確認してItemsに設定します。

補足事項はテキストボックスを使用します。改行ができるようにモードを複数行にします。


2-2.ボタンからフローを呼び出す

ボタンのOnSelectプロパティに押下時の処理を設定します。
PowerAppにPowerAutomateで作成したフローを追加し、呼び出します。 引数にはPowerAutomateに渡す引数を設定します。


結果

終わりに(今後の野望)

Power AppsとPower Automateを使ってTeamsからスケジュール登録、Teamsへの投稿ができるようになりました。
今後はTeamSpiritへの連携ができるようにして休暇申請も行えるようにしたいです。