祝日の実行を回避する
この記事では、祝日実行の回避方法を説明します。
説明不要の方は以下の流れですぐに実装できます。
①ページ末のYAMLをコピペし新規ワークフロー作成
②冒頭のGoogleカレンダーアクションにてプロバイダーIDを設定
③カスタムアクション化し、実装したいワークフローに設定
祝日のとき特定のワークフローの実行を中止する
祝日の時停止する設定
Googleカレンダーには日本の祝日カレンダーが存在します。
そのカレンダーIDを「Googleカレンダーから予定を取得」アクションに指定することでワークフロー実行日が祝日か否かを判断することができます。
まずは、「Googleカレンダーから予定を取得」アクションを使用するためにコネクション設定にてアカウントを登録します。登録の流れはこちらをご参照ください。
① 上記で登録したアカウントを設定します
② 下記IDをコピペします(日本の祝日が格納されているカレンダーのIDです)
ja.japanese.official#holiday@group.v.calendar.google.com
③ 下記コードをコピペします(日本時間当日の00:00:00を意味します)
${moment().utcOffset(540).format("YYYY-MM-DDT00:00:00+09:00")}
④ 下記コードをコピペします(日本時間当日の23:59:59を意味します)
${moment().utcOffset(540).format("YYYY-MM-DDT23:59:59+09:00")}
まずは祝日のときとそうでないときのアウトプット(「Googleカレンダーから予定を取得」アクション)を見てみます。
<祝日のとき>
祝日のときは「items」という項目に多くのデータが羅列されています。
<祝日でないとき>
祝日のときと比べて「items」にデータの記載がなく、ただ[]と書かれているだけです。
この点でワークフロー実行日が祝日か否かを判断します。
「Googleカレンダーから予定を取得」アクションのアウトプットから「items」を抽出したいので、「オブジェクトのキーの値を取得」というアクションを使用します。以下のように、キーにitemsと入力してください。
次は「祝日のとき稼働を停止する」とう設定を組み込むために、「祝日だったら」という条件式を作成します。「比較する」というアクションを使うと簡単に条件式を作成することが可能です。下記画像に沿ってアクションの設定を行います。
上記にて作成した条件式を細かく明文化すると「Googleカレンダーアクションで取得したアウトプットのitems項目の右側のデータが[]ではない場合」となります。これを最後に条件分岐アクションに連結し、強制終了アクションを組み込んで完了です。
補足:カスタムアクション化し実装
祝日停止用のワークフローが完成したら、それをカスタムアクション化し、今後手軽に使えるようにすると使い回せて便利です。
カスタムアクション化についてはこちらを参照ください
# Googleカレンダーから予定を取得 +get_google_calendar_events_1: action>: GetGoogleCalendarEvents provider: '' calendar_id: 'ja.japanese#holiday@group.v.calendar.google.com' from: ${moment().utcOffset(540).format("YYYY-MM-DDT00:00:00+09:00")} to: ${moment().utcOffset(540).format("YYYY-MM-DDT23:59:59+09:00")} query: '' maxResults: 250 meta: display: # オブジェクトのキーの値を取得 +get_value_with_key_1: action>: GetValueWithKey object: +get_google_calendar_events_1 key: items # 比較する +compare_1: action>: Compare subject: +get_value_with_key_1 compare_with: [] method: EQUALS not: true # 真のとき_祝日のとき +if_1: if>: +compare_1 _do: # 強制終了 +kill_attempt_1: action>: KillAttempt message: '本日は祝日なので稼働を停止します。'