- 日付を年度に変換したい
この記事では、そんな方に日付を年度に変換する式を紹介します。
この記事を読むと、年度を使うフローをスムーズに作れます。
日付を年度に変換する式
年度は4月で切り替わります。1〜3月は年がズレるので修正が必要です。
この式は「基準日」が1〜3月の場合は年を修正してくれます。
if(contains(CreateArray('1','2','3'),formatDateTime(outputs('基準日'),'%M')),addToTime(outputs('基準日'),-1,'Year','yyyy'),formatDateTime(outputs('基準日'),'yyyy'))
【基準日】2022年12月 →2022年度
【基準日】2023年01月 →2022年度
【基準日】2023年04月 →2023年度
アクションにするとこうなります。
フロー実行日の年度を求める場合は、基準日にタイムスタンプを指定します。
新しいアクションにある「自分のクリップボード」を開いた状態で貼り付けて使ってください。
{"id":"bf4f60d5-1456-4651-8c04-1df1cf253a5a","brandColor":"#8C3900","connectionReferences":{},"connectorDisplayName":"制御","icon":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDMyIDMyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KIDxwYXRoIGQ9Im0wIDBoMzJ2MzJoLTMyeiIgZmlsbD0iIzhDMzkwMCIvPg0KIDxwYXRoIGQ9Im04IDEwaDE2djEyaC0xNnptMTUgMTF2LTEwaC0xNHYxMHptLTItOHY2aC0xMHYtNnptLTEgNXYtNGgtOHY0eiIgZmlsbD0iI2ZmZiIvPg0KPC9zdmc+DQo=","isTrigger":false,"operationName":"スコープ","operationDefinition":{"type":"Scope","actions":{"yyyy(年度)":{"type":"Compose","inputs":"@if(contains(CreateArray('1','2','3'),formatDateTime(outputs('基準日'),'%M')),addToTime(outputs('基準日'),-1,'Year','yyyy'),formatDateTime(outputs('基準日'),'yyyy'))","runAfter":{"基準日":["Succeeded"]}},"基準日":{"type":"Compose","inputs":"@triggerOutputs()['headers']['x-ms-user-timestamp']","runAfter":{}}},"runAfter":{}}}
式の解説
変換する式を分解すると5つに分かれます。
- 基準日の月を抽出
- 1〜3の配列を作成
- 月が1〜3か判定
- 月が1〜3なら年をマイナス1
- 月が1〜3以外は年をそのまま表示
(1)基準日の月を抽出
formatDateTime関数で基準日から月を取り出します。
yyyy/MM/dd→%M
ここでポイントなのが%です。MMだと「05月」のように頭に0がついてしまうので気を付けましょう。
if(contains(CreateArray('1','2','3'),formatDateTime(outputs('基準日'),'%M')),addToTime(outputs('基準日'),-1,'Year','yyyy'),formatDateTime(outputs('基準日'),'yyyy'))
(2)1〜3の配列を作成
CreateArray関数で1〜3の文字配列を作ります。
シングルクォーテーションで囲み文字列にすることで月と比較できます。
if(contains(CreateArray('1','2','3'),formatDateTime(outputs('基準日'),'%M')),addToTime(outputs('基準日'),-1,'Year','yyyy'),formatDateTime(outputs('基準日'),'yyyy'))
(3)月が1〜3か判定
contains関数で基準日の月が1〜3に含まれているか判定します。
if(contains(CreateArray('1','2','3'),formatDateTime(outputs('基準日'),'%M')),addToTime(outputs('基準日'),-1,'Year','yyyy'),formatDateTime(outputs('基準日'),'yyyy'))
(4)月が1〜3なら年をマイナス1
addToTime関数で年をマイナス1します。
結果をyyyy形式で表示します。
if(contains(CreateArray('1','2','3'),formatDateTime(outputs('基準日'),'%M')),addToTime(outputs('基準日'),-1,'Year','yyyy'),formatDateTime(outputs('基準日'),'yyyy'))
(5)月が1〜3以外は年をそのまま表示
formatDateTime関数で、基準日をyyyy形式で表示します。
if(contains(CreateArray('1','2','3'),formatDateTime(outputs('基準日'),'%M')),addToTime(outputs('基準日'),-1,'Year','yyyy'),formatDateTime(outputs('基準日'),'yyyy'))
式をフローにすると
関数それぞれをアクションにしてフローを作りました。
条件で分岐しているので動きが分かりやすいと思います。
それぞれの関数を見たい場合はこちらのアクションをコピーしてください。
新しいアクションにある「自分のクリップボード」を開いた状態で貼り付けて使ってください。
{"id":"d82c5beb-ffcd-4e0b-9b1d-97aab967930d","brandColor":"#8C3900","connectionReferences":{},"connectorDisplayName":"制御","icon":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDMyIDMyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KIDxwYXRoIGQ9Im0wIDBoMzJ2MzJoLTMyeiIgZmlsbD0iIzhDMzkwMCIvPg0KIDxwYXRoIGQ9Im04IDEwaDE2djEyaC0xNnptMTUgMTF2LTEwaC0xNHYxMHptLTItOHY2aC0xMHYtNnptLTEgNXYtNGgtOHY0eiIgZmlsbD0iI2ZmZiIvPg0KPC9zdmc+DQo=","isTrigger":false,"operationName":"スコープ","operationDefinition":{"type":"Scope","actions":{"基準日の月を抽出":{"type":"Compose","inputs":"@formatDateTime(outputs('基準日'),'%M')","runAfter":{"基準日":["Succeeded"]}},"基準日":{"type":"Compose","inputs":"@triggerOutputs()['headers']['x-ms-user-timestamp']","runAfter":{}},"1〜3の配列を作成":{"type":"Compose","inputs":"@CreateArray('1','2','3')","runAfter":{"基準日の月を抽出":["Succeeded"]}},"月が1〜3か判定":{"type":"If","expression":{"contains":["@outputs('1〜3の配列を作成')","@outputs('基準日の月を抽出')"]},"actions":{"月が1〜3なら年をマイナス1":{"type":"Compose","inputs":"@addToTime(outputs('基準日'),-1,'Year','yyyy')","runAfter":{}}},"runAfter":{"1〜3の配列を作成":["Succeeded"]},"else":{"actions":{"年をそのまま表示":{"type":"Compose","inputs":"@formatDateTime(outputs('基準日'),'yyyy')","runAfter":{}}}}}},"runAfter":{}}}
まとめ
PowerAutomateで日付を年度に変換する式を紹介しました。
条件アクションの代わりにif文を使う事で1行の式にまとめています。ifを使うと関数を変換の幅が広がるので仕組みを覚えておきましょう。
PowerAutomateのおすすめ記事
人気ページ
Apply to eachの使い方
アレイのフィルター処理の使い方
日付関数の使い方
エラーを無視する方法
メールの内容をExcelへ転記
メール本文から名前を抽出
>>PowerAutomateの記事一覧を見る<<
お気に入り必須!公式ページ
Microsoft Power Automate
式関数のリファレンス
コネクタのリファレンス
Excel Online (Business)のリファレンス