はじめに
ついつい勤怠の月次締め作業を忘れてしまうことって皆さんもご経験あるのではないでしょうか?
自動でリマインドしてくれたら忘れないのになーということで、PowerAutomateを使ってリマインドするようにしてみました。
クラウドフローを作る
それでは早速作っていきましょう。
現在時刻を取得する
トリガーは平日の16:50に自動実行されるように設定しています。
現在の時刻取得アクションで時刻を取得し、タイムゾーンの変換をします。
※デフォルトがUTCなのでタイムゾーンの変換をしないと9時間ズレてしまうので要注意
休日を取得する
続いては祝日を考慮する為、日本の休日を取得しておきましょう。
Outlookカレンダーから休日は取得することができます。
月末日付と月末の曜日を取得する
月末にリマインドしたいので関数アクションを使用して月末日付を取得します。
月末が土日の可能性もあるため曜日も併せて取得しておきます。
月末が休みの場合は月末の最終営業日にリマインドを出したいのでフロー実行日時から月末日までの日数も取得しておきましょう。
月末日を取得する
addDays(startOfMonth(addDays(startOfMonth(convertFromUtc(utcNow(), 'Tokyo Standard Time')), 32)), -1)
月末日付までの日数を取得する
sub(dayOfMonth(variables('targetDate')),dayOfMonth(convertFromUtc(utcNow(),'Tokyo Standard Time')))
曜日を取得する
dayOfWeek(variables('targetDate'))
祝日判定を行う
リマインドに必要な情報の準備が出来たので実際にリマインドする処理を作っていきましょう。
まず、祝日判定を行います。祝日だった場合はリマインドせずにクラウドフローを終了します。
祝日判定
length(body('日本の休日を取得する').value)
曜日判定を行う
祝日じゃなければ月末日の曜日判定を行っていきます。
土曜または日曜だった場合は休日に入る前の金曜日にリマインドを出したいのでちょっと工夫してあげます。
- 日曜の場合 | 月末日付までの日数を-2する
- 土曜の場合 | 月末日付までの日数を-1する
Teamsでリマインドを行う
祝日判定、月末曜日判定を行ったら最後に月末日付までの日数をチェックします。
日数(=subDate)が0の場合、月末と判断し通知を行います。1以上の場合は何もせずに終了します。
※曜日判定にて土曜または日曜の場合に月末日付までの日数を減らすことで月の最終営業日(金曜)にリマインド出来るようになります。
あとはTeamsの「チャットまたはチャネルでメッセージを投稿する」アクションを利用し、お好きなところにリマインドを通知するだけとなります。
さいごに
実際に作ってみて月次締め忘れを大分防げるようになったと感じています。
このフローでは年末の対応が出来ていないので今度時間ある時に改良してみようと思います。