Power Appsで当月の日付一覧と平日一覧と営業日一覧を出力する方法を紹介します。
日付一覧
ギャラリーなどのItemsプロパティに以下の数式を入力します。
With(
Match(Text(Today(), "yyyy/mm/dd"), "(?<year>\d{4})/(?<month>\d{2})/(?<day>\d{2})"),
AddColumns(
Sequence(
Day(Date(Value(year), Value(month) + 1, 0)),
0
),
"Day",
Date(Value(year), Value(month), 1) + Value
)
)
Sequence関数で当月の日数分のインデックス列を持つテーブルを作成し、それにAddColumns関数で月初の日付+インデックス列の値を持つ列を追加することで当月の日付一覧を取得できます。
平日or休日一覧
先ほどの数式にFilter関数で平日のみor休日のみにフィルターをかけるだけです。
Filter(
With(
Match(Text(Today(), "yyyy/mm/dd"), "(?<year>\d{4})/(?<month>\d{2})/(?<day>\d{2})"),
AddColumns(
Sequence(
Day(Date(Value(year), Value(month) + 1, 0)),
0
),
"Day",
Date(Value(year), Value(month), 1) + Value
)
),
Not(Weekday(Day) in [1, 7])
)
Filter(
With(
Match(Text(Today(), "yyyy/mm/dd"), "(?<year>\d{4})/(?<month>\d{2})/(?<day>\d{2})"),
AddColumns(
Sequence(
Day(Date(Value(year), Value(month) + 1, 0)),
0
),
"Day",
Date(Value(year), Value(month), 1) + Value
)
),
Weekday(Day) in [1, 7]
)
営業日一覧
平日一覧にOutlookコネクタを利用して祝日を除外することで、営業日一覧を取得できます。
Filter(
With(
Match(Text(Today(), "yyyy/mm/dd"), "(?<year>\d{4})/(?<month>\d{2})/(?<day>\d{2})"),
With(
{
Value:AddColumns(
Office365Outlook.GetEventsCalendarViewV3(
LookUp(
Office365Outlook.CalendarGetTablesV2().value,
name = "日本 の休日"
).id,
Date(Year(Today()), Month(Today()), 1),
Date(Year(Today()), Month(Today()) + 1, 0)
).value,
"Holiday",
DateValue(start)
).Holiday
} As Holiday,
AddColumns(
AddColumns(
Sequence(
Day(Date(Value(year), Value(month) + 1, 0)),
0
),
"Day",
Date(Value(year), Value(month), 1) + Value
),
"Weekday",
Weekday(Day) in [1, 7],
"Holiday",
Day in Holiday.Value.Holiday
)
)
),
!Weekday && !Holiday
)
とても複雑になってしまったので、詳しい解説は諦めます。
AddColumns関数で休日と祝日にそれぞれフラグをつける列を追加しているので、Filter関数で容易にフィルターをかけられるようになりました。
Power Automateの方が簡単
とてもローコードと呼べないような数式になってしまいましたが、Power Automateならもっと簡単に営業日の一覧を取得できます。
この例以外にもPower Automateの方が容易に実装できる場合があるので、コネクタの利用で躓いたらPower Automateで値を取得してみても良いかもしません。
コメント