2023年09月22日08時00分 / 提供:マイナビニュース
前回までに、件名に日付を入れたメールをGmailで新規作成するところまでの作業をPowerAutomateで自動化できるようにした。その際、入力される日付はメール作成日になるようにしていたが、実際の業務では当月末、翌月末、翌々月末、当月25日、翌月20日といった特定の締め日を扱うことも多い。Power Automateで業務を自動化する際には、そうした特定の日付を生成する必要に迫られることがある。今回は、日付の計算方法と加工方法についてのサンプルを紹介していく。
○今日の日付をダイアログで表示
まず、今日の日付をダイアログで表示する処理をPower Automateで作成する。次のように「日付サンプル」というフローを新規作成する。
そして前回説明したように「現在の日時を取得」と「datetime をテキストに変換」を使って今日の日付をテキストとして用意する。
ここで新しいアクション「メッセージを表示」を追加する。指定したテキストを表示する表示するアクションだ。表示するメッセージに「今日は『%FormattedDataTime%』です。」という指定をしている。上記スクリーンショットでテキストとして変換した日付に%FormattedDataTime%の変数でアクセスできるので、それを表示している。
作成したフローは次のようになる。
作成したフローを実行すると次のようになる。
生成した本日の日付が表示されていることを確認できる。
○当月末の日付を計算するアルゴリズム
Power Automateは日付に関して「加算する日時」というアクションを提供している。これは年、月、日、時、分、秒のいずれかの単位で値を加算、もしくは減算するアクションだ。このアクションを駆使すれば、月末や月初といった日付を得られる。
やり方はいくつかあるが、ここでは次の方法で「当月末」を取得する。
今日の日付から今日の「日」を減算する。例えば今日の日付が「2023年9月9日」だった場合、この日に対して「9日」を減算する。「2023年9月9日」日から「9日」を減算すると先月の月末になるので、処理の結果は「2023年8月31日」になる
上記で求めた先月末に、「1月(1カ月)」を加算する。例えば先ほどの「2023年8月31日」に1カ月を加算すると「2023年9月30日」になり、求めたかった当月末になる
月の日数を自分で分岐処理させて計算しようとすると、かなり複雑な処理をしなければならない。Power Automateはローコードのツールなので、そうした複雑な処理をするのはとても苦手だ。
しかし、上記の手順であれば、そうした面倒な処理はPower Automateの提供するアクション(正確にはそれより先のDataTimeに対して提供されている演算)が代わりに行ってくれ、さらに欲しい日付も得られる。こんな感じで機転を利かせて、複雑にせずに欲しい値を得るようにするのがPower Automate的なプログラムの組み方だ。
○日付から月や日の部分だけを取り出す方法
先ほどの手順だと「今日の日付が『2023年9月9日』だった場合、この日に対して『9日』を減算する」という処理を行う必要がある。つまり、今日の日付から「日」のデータだけを取り出す必要がある。
日付の変数が「%CurrentDateTime%」だった場合、「%CurrentDateTime.Day%」が「日」を表す。これは年、月、時、分、秒に対しても同じような仕組みが用意されている。簡単にまとめると次のようになる。
より詳しくは「DateTime Struct (System) | Microsoft Learn」を参考にしていただきたい。
※ Power Automateはローコードプラットフォームだが、その根底には.NET技術があるので、細かな部分への理解を深めるには.NETを理解する必要がある。
○「加算する日時」で減算する方法
執筆時点でPower Automateがデフォルトで提供している基本的な日付演算のアクションは「加算する日時」だ。しかし、「今日の『日』を減算する」という処理を行いたいので、加算ではなく減算をする必要がある。
この場合には「マイナス値を加算する」という処理にすることで減算を行う。つまり先ほどの値を次のように扱うことでマイナス値にできるので、これを加算の対象にすれば良い。
Power Automateはローコードツールだが、実際にはこのようにある程度プログラミング的なこともしなければならない。しかしこれ以上深く追っていく必要はないので、こういったものだと思って使っていこう。
○先月末の日付を計算して表示
というわけで、「加算する日時」アクションを使って本日の日付から当月末を計算する。まず、先ほどのアルゴリズムの1の処理を実行して先月末の日付になっていることを確認する。
アルゴリズム通りに先月末の日付が表示された。
○当月末の日付を計算して表示
次に先月末の日付に1カ月分を加算して当月末を計算する。
アルゴリズム通りに当月末の日付が表示された。
○翌月末の日付を計算して表示
試しに1カ月分を足している部分を2カ月分に変更すると、次のように翌月末の日付を得られる。
翌月末の日付が表示されている。
○ローコードでも、処理させるには頭を使う
ここでのやり方ができれば、作業している日の日付をベースに先月、当月、翌月、翌々月といった月の月末や特定の日などを生成できる。日付は請求処理や入金処理、さまざまな連絡業務など利用することが多いので、Power Automateで使う場面も少なくないはずだ。
ローコードツールだとしても、欲しい処理を実現するにはある程度頭を使わなくてはいけない。日付の計算はその例としてわかりやすいものではないだろうか。