23
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

#PowerAutomate で #Outlook の休日の予定から祝日時のみ動作する処理を作る方法

Last updated at Posted at 2021-04-05

定期実行するけど、祝日だったら動作する(もしくはしない)っていう処理って結構ありませんか?
でも、曜日は比較的簡単に取れるけど、祝日ってそう簡単に取れるのでしょうか?

ということで、そんな貴方に朗報。
Power Automate と Outlook で、簡単に祝日判定ができるやり方をまとめました。

祝日の取得方法

Outlook には、日本の休日という予定表が自動的に入っています。

image.png

これを使えば、いちいち毎年祝日を管理するようなテーブルを作る必要もありませんし、祝日が増えたら(もしくは減ったら)勝手に更新されるので、使わない手はないですよね。

なので。休日は以下のように、「イベントのカレンダービューの取得」を使うことにしました。

image.png

開始時刻と終了時刻

開始時刻や終了時刻は、実行当日の日付を入れる必要があります。
なお、日本の休日のタイムゾーンUTCで宣言されていますが、時刻は以下のようにすれば良いみたいです。

image.png

yyyy-MM-ddT00:00:00.000000 で時刻を指定する必要があるようですし、開始時間が現在日付、終了時刻に翌日の日付を指定する必要があります。

なので、関数を使ってこちらを処理することになります。

開始時刻

formatDateTime(
    convertTimeZone(
        utcNow(),
        'UTC',
        'Tokyo Standard Time',
        'yyyy-MM-dd'
    )
)
終了時刻

formatDateTime(
    convertTimeZone(
        addDays(
            utcNow(),
            1
        ),
        'UTC',
        'Tokyo Standard Time',
        'yyyy-MM-dd'
    )
)

関数の解説ですが

  1. utcNow で現在の日時をUTCで取得します。
  2. 終了時刻のみ、utcNow に対して addDays で1日加算します。
  3. convertTimeZone でUTCをJST(日本標準時)に変換、かつ時間を切り捨てるためにフォーマットを yyyy-MM-dd に変換します。
  4. formatDateTimeyyyy-MM-ddyyyy-MM-ddT00:00:00.000000 に変換します。

すると、以下のように、現在日時を元に、開始時刻と終了時刻に適切な値が入力されます。
image.png

結果はアレイ変数へ

Outlookのこのアクションは、複数のデータが出ることを前提(アレイ型)で出力されます。
今回、この結果が存在するか否かという判定をすることで、祝日判定を行います。
なので、後続で無用な Apply to Each を追加されないよう、アレイ型で変数を宣言します。

image.png

変数宣言時の値に割り当てる動的コンテンツには、イベントのカレンダービューで取得した値の一覧を指定します。

image.png

いよいよ判定です

変数がカラだった場合は平日、そうじゃない時は祝日と判定できますので、そのとおりに組んでいきます。

条件式を以下のようにします。

image.png

判定対象

empty(variables('結果'))
※変数名を「結果」としていた場合

このように組むことで、はいの部分には平日のみが動作する処理、いいえの部分には祝日のみが動作する処理が完成します。

なお、この処理は、LogicApps でも応用して導入することができると思いますので、社内システムのバッチ処理に使っている方は、ぜひこちらの祝日判定をお試しされるとよいのではないでしょうか?

まとめ

いかがでしたでしょうか?
実はこの処理、より関数を使いこなせば、より少ないアクションで判定させることができると思います。
ですが、そうなるとプロ開発者に依頼しないといけなくなってしまいます。
ですので、できるだけ処理を簡単に、ある程度GUIでもらくらく作ることができる方法としてまとめてみました。
皆さんの業務の一助や、アイデアにつながれば幸いです。

23
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?