Power Automate Desktop | 月初日、月末日の日付を取得するには考え方を変えればいい!

売り上げや、在庫管理などを自動化するときに「月初日」や「月末日」をよく利用しますが、いざPower Automate Desktopで設定しようとしても、やり方がよくわからないですよね、なので今回は簡単に月初日、月末日を取得できる方法を記事にしましたので、ぜひご覧ください。

まず前提として、基本的な日付取得方法分からない方はこちらの記事から

Power Automate Desktop | 日付取得の基本、任意の日付を取得するには?
日付を取得するには、現在の日時を取得アクションを使い日付を取ってきます。 取得:現在の日時 タイムゾーン:システムタイムゾーン にしておけば基本的には問題ありません。 この日付をもとに様々な日付に変更するにはどうすればいいの見ていきましょう...

分かる方はこのまま読み進めてください。

結論としてこのようなフローになります。

ではアクションをひとつづつ見ていきたいと思います。

現在の日付の取得方法

まずは現在の日付を取得していきましょう。

左側サイドメニューより日時アクションを選択、プルダウンより現在の日時を取得をフロー内に追加。

取得: 現在の日時
タイムゾーン: システム タイムゾーン

にすることで現在の日時がCurrentDateTime(変数名は変更可能)という変数に保存されます。

あとは、使いたい文字列になるように左サイドメニューアクションのテキストより、datetimeをテキストに変換をフローに追加

変換するdatetime: 先ほど作った変数(CurrentDateTime)を選択
使用する形式: カスタム
カスタム形式: yyyyMMdd

と入力すれば20220519のように取得が可能。

またyyyy年MM月dd日、などのように日時の間にテキストを追加することができる。

月初日の取得

では本題の月初日の取得はどうすればいいかというと、先ほどのdatetimeをテキストに変換の際に

カスタム形式: yyyy/MM/01

とすれば月初日を取得することができます。
単純に1日固定にすればいいだけなので簡単ですね。

月末日の取得

月末を取得する際は少し考え方を変えて、まずは取得したい月末日の月の次の月、つまり来月の1日を取得します。

左サイドメニューアクション、日時より加算する日時をフローに追加。

日時:  今月の日付が入っている変数(先ほどの例でいくとCurrentDateTime)
加算: 1
時間単位: 月

を選択すると次の変数(今回で言うResultedDate)に来月の日付が入ります。

その後、月初日の取得と同じ手順で来月の月初を設定します。
(datetimeをテキストに変換でResultedDateを選択しカスタムのところにyyyy/MM/01と入力し月初日を取得する。)

スラッシュを忘れないようにしてください。datetimeに変換する際にエラーになります。

これで来月の1日がテキスト形式で取得できました。
なので今度はこの日付をまたdatetimeに変換します。
テキストアクションよりテキストをdatetimeに変換を追加

変換するテキスト: 来月の月初日の変数を選択

これでdatetimeに変換できました。
後はこの日付を-1日すれば今月の月末日を取得できます。

加算する日時を追加

日時: 来月の月初日のdatetime変数
加算: -1
時間単位: 日

これで新たな変数に今月の月末日の日付を取得することができました。

月末日取得まとめ

・現在の日付を取得
・1月加算して来月に
・来月の1日をテキスト形式で指定
・テキストをdatetime変数に戻す
・1日減算して今月末を取得

こちらのコードをそのままPower Automate Desktopに張り付ければ今回の月末日取得のフローを作成できます。コピペしてください。

DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> CurrentDateTime
DateTime.Add DateTime: CurrentDateTime TimeToAdd: 1 TimeUnit: DateTime.TimeUnit.Months ResultedDate=> ResultedDate
Text.ConvertDateTimeToText.FromCustomDateTime DateTime: ResultedDate CustomFormat: $'''yyyy/MM/01''' Result=> FormattedDateTime
Text.ConvertTextToDateTime.ToDateTime Text: FormattedDateTime DateTime=> TextAsDateTime
DateTime.Add DateTime: TextAsDateTime TimeToAdd: -1 TimeUnit: DateTime.TimeUnit.Days ResultedDate=> ResultedDate2
Power Automate Desktop | フローを共有する方法 エクスポート 無料版でもできる方法
Power Automate Desktopを使って、デスクトップ フローを別のユーザーと手軽に共有する方法を解説します。以下はシンプルな手順です。 コピーしたアクションを他のユーザーに直接送るか、テキストファイルに保存します。 受信者は、...

Excelで日付計算して取得しようとした結果

ちなみにExcelで日付を計算してから取得すれば楽にできるんじゃないかと考えてやった結果がこちらです。

=TODAY()で今日の日付を取得、=EOMONTH()で月末日取得まではよかったんですが、書式設定を日にちに変更するショートカットキー(Ctrl + #)がキーの送信ではうまく実現せず、Altから頑張って書式設定を日付に変更。
それを読み取って、datetimeに変換。

=EOMONTH(開始日, 月)

開始日から起算して、指定された月数だけ前または後の月の最終日に対応するシリアル値を返します。 この関数を使用すると、月末に発生する満期日や支払日を計算することができます。

microsoft

ここまでやらないといけないので、結果として全然楽じゃありませんでした。
素直にテキスト変換や加算を利用するのが良いと思います。

年号の取得などはExcelからやる方が楽なのでその時はExcelで計算した方が良いですね。
和暦や年号取得のやり方はこちら

Power Automate Desktop | 和暦,年号の取得はExcelを使えば簡単に!
結論から言うと、年号を取得したい日付を空のExcelに張り付け、年号を表示させて取得するという流れになります。 年号の取得方法 まずは日時アクションの現在の日時を取得をフローに追加 次に空のExcelを起動します。ExcelアクションのEx...

まとめ

これで月末日以外にも様々な日付を取得することができるようになったと思います。
毎回手打ちで大量のファイルを日付変更していては時間がもったいないですので効率よく働くためにもPower Automate Desktopを利用して効率化していきましょう。

事務作業などで日付の変更は多々行われますので、これらを覚えて作業を自動化して楽に働きましょう!

コメント