見出し画像

Power Automateを使ってTeamsでの作業を少し便利にしよう

Power Automate を使って業務改善しよう!というのは、理解しつつも何か大きな事をなさなければ…と、大きく考えてしまって着手出来ない事もあるかと思います。

QAにおける自動テスト、自動プレイでも同様の事が言えます。
 「全て自動化しなければ!」
 「いや… あの処理は難しいかもな…」
  …
  … 結局、未着手…
みたいな話はよく聞きます。ちょっとでいいんです。
少し便利になればいいんです。そこからだと思います。

そこで今回は、弊社で作成しているフローを一部紹介したいと思います。
簡単なフローですので、ぜひ参考にしてみてください。


月~金に通知を行うフロー

今回、段階的に紹介していきます。

単純な処理であればすぐに実装できますね。
以下、アクションとトリガー1つずつで完成します。
 ・時間で起動するトリガー
 ・メッセージ通知アクション

週報や月報の作成リマインド、社内経理処理や報告のリマインドと言った使い方が可能となります。ただ、シンプルが故に、その日が休みであるかどうかは関係なく、指定した日時や曜日に通知を行う状態です。

より正確に行いたいですよね。次のステップに進みましょう。

・祝日に通知しないようにする

上記の実装が出来たら、休日判定を追加します。
検索すると、GoogleやOutlookの祝日を取得する方法がすぐ見つかるので、そちらも参照してみてください。

簡単ではあるのですが、その他、休業日やプロジェクト内で通知が不要な日があるかもしれません。変更に応じて調整するのが面倒だと感じた為、社内で共通アクセスできる場所、SharePoint上に祝日・休業日を記載したExcelを配置し参照する事にしました。

祝日に関しては内閣府のページから取得が可能です。行政機関のオープンデータについては、e-Govデータポータルからも検索できます。

取得したデータをExcelに記載し、必要な休日を足しておきます。

「表内に存在する行を一覧表示」するアクションを使い、発見できた場合は休日。発見できなかった場合は、営業日として通知が必要と判断します。

利用方法は簡単です。

  1. SharePoint上にあるExcelファイルを指定

  2. そのExcelにあるどのテーブルを参照するか指定

  3. 検索用のフィルターを設定

フィルタークエリに、渡されているのはタイムゾーンの変換アクションにて現在の時間を変換した値で、実行時には以下のような値が入ります。

休日 eq '2024-01-01'

休日と設定されている列から、指定された日付の行を選択しています。

これで、祝日、休業日に通知を飛ばさないようにできました。

その他の通知系フロー

他にもいろいろあります。地味に便利な機能です。
先ほどの祝日、休日を判定できるようになった事で、さらに広がります。

  1. 毎週の末営業日にリマインドするフロー

  2. 休日を考慮した、月一回のリマインドフロー

会社ですので、週報記載や勤怠締め処理、各種申請書類の提出期限等々、固定された物がありますよね。そういった通知に便利です。

実装方法は、指定日より数日前にフロー実行するよう設定し、指定日が営業日でなければ、その前日が営業日か?前々日はどうか?と、実行日までさかのぼってチェックし、通知処理を遅延実行する仕組みです。

「1.」の場合は、火曜日に実行し、3日後の金曜日が休日か判定します。
金曜日が休日の場合は、その前日、木曜日が休日か判定していきます。
営業日を発見次第、検索を終了して対象の曜日まで、遅延処理を実行するだけです。

「2.」の場合は、準備していた祝日、休日データに土日が入っていないため、別途dayOfWeek関数も用いて判定しています。

チャットベースのタスク管理

Teamsのチャネルの投稿から、タスクを作成制御する方法です。
Plannerをカンバン方式で利用しているのですが、このフローは便利です!

  • #pickupと発信し、Plannerタスク作成&Excelに行追加するフロー

  • #doneと発信し、Plannerタスクを完了レーンに移動するフロー

  • Plannerタスク完了時に該当スレッドに返信するフロー

タスク作成フロー #pickup

チャット上で、#pickup という文字列を含み投稿すると、そのスレッドの件名で Plannerタスクを作成したり、Excelに記載するようにしています。Excelに貯めていく事で、返信用スレッドIDを保存したり、IDを順番に割り振ったりしています。

IDを振られた後は、スレッドの投稿者がタイトルを変更しておけば、準備万端です。

スレッドの作成時ではなく、やり取りを行った後から案件化する場合は、#pickupの文字列を含み返信を行うと、返信したその親スレッドの件名で案件化を行うようにしています。

スレッド作成時に、#pickupを含めた場合
実行後のPlanner


実行後の管理Excel

スレッドIDを保存している事で、以降のフローから応答・返信が可能です。

タスク完了フロー#done 

完了時には、#done という文字列を含み返信すると、そのタスクは完了したとみなし、Plannerタスク上でレーンを移動させます。
運用によっては、そのままPlannerタスクを完了させてもよいと思います。

#doneの文字列を含んで変死を行った場合
実行後のPlanner

実作業はチャットベースで行いつつ、朝礼や定例等のタイミングで何が進行中で何が完了しているか全体を把握し、その場で「このタスク終わってたよね?」と確認出来れば、Planner上でタスクを操作し完了させます。

Plannerタスク完了時のフロー

Planner側のタスクが完了になった際には、タスク名をExcelから検索し、"済"マークを付け、スレッドIDを元に応答を行います。

実行後のExcel
実行後のスレッド


まとめ

一部をご紹介させていただきましたが、そんなに難しい事はやっていない事を理解いただけたかと思います。

今回説明は行いませんが、他にもTeamsの管理を楽にする為のフロー等、まだまだあります。

  • 異なるチームのメンバーを同期するフロー

  • CSVからチームメンバーを追加するフロー

  • タグメンバーを自動管理するフロー

テンプレートから検索したりしてみるとよいかと思います!