平日のみLogic Appsのワークフローを実行する方法

2024-04-20Azure,Logic Apps

ロジックアプリ(Azure Logic Apps)で平日のみワークフローやアクションを実行する方法の紹介です。

Logic Appsで平日のみワークフローを実行する方法については2つ方法があります。

    • Scheduleのトリガーで設定
    • dayOfWeek関数で曜日を取得して判断

Scheduleのトリガー設定を使うと平日のみワークフローをスケジュール実行できます。
dayOfWeek関数を利用を使うと、ワークフロー内で曜日判定してアクションを実行させることができます。

Logic AppsではDate Timeのコネクタが用意されており、ワークフロー内で日付や時刻を取得できます。
dayOfWeek関数を利用して曜日を取得できます。
これらを組み合わせすると、ワークフロー内で曜日判定して平日のみアクションを実行させることができます。

※本記事内ではロジックアプリ(Azure Logic Apps)をLogic Appsとして表記しています。

スポンサーリンク

scheduleのRecurrence(繰り返し)トリガーで平日のみワークフローを実行

ワークフロースケジュール実行トリガー

Logic Appsでは、ワークフローを繰り返し実行させるためにスケジュールのコネクタが用意されています。
Recurrence(繰り返し)トリガーを使用して、Logic Appsのワークフローを設定した時間にスケジュール実行できます。

スケジュール トリガー

曜日を指定してワークフローをスケジュール実行

スケジュール実行のトリガーを作成します。
ScheduleコネクタのRecurrenceトリガーを利用します。
毎朝9時30分(日本時間)にワークフローを実行するようにしています。

トリガーの作成
トリガーの追加でScheduleコネクタを選択します。
トリガーにはRecurrenceを使用します。

Logic AppsのトリガーでScheduleコネクタのRecurrenceを選択
Frequencyで週を選択します。
On These Daysという設定項目が表示されます。
On These Daysがワークフローのスケジュール実行曜日を設定になります。
この選択肢に指定した曜日にワークフローが実行されます。
併せて実行時間指定もできます。
平日の9時半のみ実行と言った設定ができます。

RecurrenceのトリガーでFrequencyに週を選択した場合
Frequencyに週をを選択した場合のOn These Days選択肢の表示内容
RecurrenceのトリガーでFrequencyに週を選択、平日のみのスケジュール設定した例

dayOfWeek関数でワークフロー内で曜日を判定、平日のみアクションを実行させる

日付取得に関するコネクタ

Logic AppsのコネクタにDate Timeのコネクタがあります。
Date TimeのコネクタにはCurrent Timeという現在日付と時刻を取得するアクションが用意されています。
Current Timeのアクションを利用して、ワークフロー実行時点の時間を取得出来ます。

曜日取得方法

ワークフロー内で曜日取得できる関数が用意されています。

dayOfWeek

dayOfWeek関数を利用して日付から曜日を取得できます。
取得した曜日は数字で表されます。
日曜日が0で土曜日が6になります。

日付や曜日の取得に関するアクションや関数についてはこちらで紹介しています。
Date Timeコネクタのアクションや日付や時刻に関する関数についてまとめています。

ワークフロー

Date TimeコネクタのCurrent Timeアクションを利用してワークフロー実行時点の現在日時を取得します。
dayOfWeek関数で曜日を取得します。
Condition(Control)アクションで条件判定します。

Logic Apps自体のリソース作成手順についてはこちらの記事で紹介しています。
トリガーやアクションの概要についてもこちらで紹介しています。

トリガーの作成

サンプルとしてスケジュール実行のトリガーを使用しています。
毎朝9時30分(日本時間)にワークフローを実行するようにしています。

※HTTPやRequestのコネクタでも問題ありません。

トリガーの作成
トリガーの追加でScheduleコネクタを選択します。
トリガーにはRecurrenceを使用します。
ワークフローを実行するスケジュールを設定します。
Logic AppsのトリガーでScheduleコネクタのRecurrenceを選択
Recurrenceトリガーでスケジュール実行を設定

ワークフロー実行時の日時を取得

ワークフロー実行時の現在日時を取得します。
Date TimeコネクタのCurrent Timeアクションを利用します。

現在日時を取得
Date Timeコネクタを表示します。
Current Timeのアクションを選択します。
Current Timeアクション自体に設定はありません。
Logic AppsのアクションでDate Timeコネクタを表示
Date TimeコネクタでCurrent Timeのアクションを選択
Current Timeのアクション設定画面

Current Timeの変数を作成

取得したの日時を格納する変数を作成します。
作成した変数は曜日判定に利用します。
変数名は"CurrentTime"としています。

変数の作成
Variables(変数)でInitialize Variable(変数の初期化)を選択します。
値にはCurrent Timeを設定します。

VatriablesコネクタでInitialize Vatriableのアクションを選択
Initialize Vatriableのアクションを設定(Current Timeを設定する)

曜日を取得して変数に格納

dayOfWeek関数を利用してCurrent Timeから曜日を取得します。
dayOfWeek関数は()に設定した日時の曜日を数字で戻します。
変数名は"DayOfTheWeek"としています。

曜日を取得する

Variables(変数)でInitialize Variable(変数の初期化)を選択します。
値にはdayOfWeek関数を設定します。
関数設定時はfxを選択します。

dayOfWeekの値には先ほど設定した変数"CurrentTime"を指定します。
変数のTypeにはIntegerを指定しています。

 

 

Initialize Vatriableのアクションでday Of weekの関数を設定
dayOfWeek関数で今日の曜日を取得

平日を条件判断

取得した曜日が平日か土日かを条件判断します。
条件判断にはConditionを利用します。

Azure Logic Apps のワークフロー アクションを制御する条件を追加する

AND条件で1以上(月曜日から)、5以下(金曜日まで)の場合にTrueとなるようにしています。

曜日判定
Controlコネクタを表示します。
Conditionのアクションを選択します。
Controlコネクタを表示してconditionのアクションを選択
1(月曜日)から5(金曜日)の場合はTrueとなるよう条件指定します。
条件にはANDを指定します。
値には曜日の数字を格納している変数"DayOfTheWeek"を設定します。
演算子にはis greater Or equal to(以上)とis less Or equal to(以下)を指定します。
conditionのアクションで条件を設定(平日をTrueとする)
conditionのアクション設定完了画面

結果確認用の変数を作成

結果確認用の変数を作成します。
変数名は"Result"としています。
Set variableのアクションをTrueとFalseそれぞれに設定します。

結果表示用の変数を作成
結果表示用の変数を設定します。
Initialize Variable(変数の初期化)を追加します。
Conditionのアクションの前に追加します。
結果表示用の変数を作成
ConditionがTrueの場合のアクションを追加します。

結果がTrueの場合は「平日ですよ。働きましょう。」と表示する。
ConditionがFalseの場合のアクションを追加します。

結果がFalseの場合は「休日ですよ。休みましょう。」と表示する。

※Condition内ではInitialize Variable(変数の初期化)は使えません。

完成したワークフロー

完成したワークフローです。
処理するアクションをConditionの結果に設定します。
今回は曜日に応じて変数の設定をしています。

曜日判定するワークフロー
完成したワークフローです。
曜日を判定して値を設定します。
休日(土日)を判定するLogic Appsのワークフロー

ワークフロー実行結果

ワークフローの実行結果です。
日曜日の場合はFalse、月曜日の場合はTrueとなっている事が確認できます。

ワークフロー実行結果
ワークフロー実行結果です。
日曜日の場合はFalse、月曜日の場合はTrueとなっている事が確認できます。
結果がFalseの場合の休日判定ワークフロー実行結果
結果がTrueの場合の休日判定ワークフロー実行結果

取得した日時はUTC

時刻取得にあたっては注意点があります。
Date TimeのCurrent Timeで取得した日時はUTCです。
日本時間で処理させるには日本時間へタイムゾーンを変換する必要があります。

タイムゾーンの変換についてはこちらで手順を紹介しています。

最後に

Logic Appsのワークフローを平日のみ実行する方法について確認しました。
スケジュール実行を平日のみにする場合は、Recurrence(繰り返し)トリガー利用、ワークフロー内で曜日判定する場合はdayOfWeek関数を利用してできる事が分かりました。

Logic Appsのワークフローで曜日判定する方法の場合は、色々応用もできそうです。
引き続き色々試してみたいと思います。

Logic Appsを利用した仮想マシン(Azure VM)の起動停止方法についてはこちらで紹介しています。

Logic Appsを利用したAzure Bastionの起動停止(作成削除)の設定手順について紹介しています。

Logic Appsを利用したAPI Managementの起動停止(論理削除、回復)手順についてはこちらで紹介しています。

 

スポンサーリンク