Docly Child

最終営業日にワークフローを実行する

1519 views

この記事では、最終営業日や月初営業日など、日付と曜日が可変的/不規則なスケジュールでワークフローを実行する方法を紹介します。

 GetGoogleCalendarEvents

月の最終営業日などにワークフローを実行したい場合、通常のスケジュール設定だけでは対応が難しい場合があります。

※通常のスケジュール設定で難しい例…「最終営業日」の曜日,日付が不定

このような場合は、GetGoogleCalendarEventsアクションを利用したワークフロー構成が有効です。

 

 ワークフローの設定例

今回は、以下のケースを想定したワークフローを設定してみます。

最終営業日は24日から31日の間で、曜日は不定、19時45分にワークフローを実行

設定が完了したワークフローでは、以下の動作が実現されます。

「毎月24~31日の間、毎日19時45分にワークフローが実行され、GoogleCalendarに所定の予定が登録されて”いない”場合はワークフローを強制終了し、予定が登録されている場合はワークフローを続行する」

まずはGoogleCalendarのコネクションを登録する必要があります。

コネクション画面より、GoogleCalendarのコネクションをご登録ください。
詳細な方法は以下をご参照ください。

 

GoogleCalendarに、最終営業日を示す予定を登録します。

  • GoogleCalendarを開き、以下タイトルの予定を登録します。AUTORO_最終営業日
    ※終日予定でなくても問題ありません。
    ※予定名は、同日中に存在する他の予定名と重複しないようにしてください。

次に、AUTOROのスケジュールを登録します。

  • トリガー画面を開き、画面右上の「追加 > スケジュール実行」をクリックします。
  • ポップアップから「最終営業日に実行したいワークフロー」を選択します。
  • 以下のcronを入力します。
    45 19 24-31 * *
  • 「次の10件のスケジュールを確認」した後、スケジュール登録を確定します。

45 19 24-31 * *

3のスケジュール設定により実行されたワークフローの内部で、実行時点の日付において2で登録した予定が存在するか判断します。

  • プロバイダーIDとカレンダーIDに、予定を登録したカレンダーのコネクションとカレンダーを指定します。
  • 「取得期間の開始日時」に以下を入力します。
    ${moment().utcOffset(540).format('YYYY-MM-DDT00:00:00Z')}
  • 「取得期間の終了日時」に以下を入力します。
    ${moment().utcOffset(540).format('YYYY-MM-DDT23:59:00Z')}
  • 「検索ワード」に2で指定した予定のタイトルを入力します。
    AUTORO_最終営業日
  • GetGoogleCalendarEventの結果を変数に保存します。

 

条件分岐を設定し、4で予定が取得されなかった(最終営業日ではなかった)場合にワークフローを強制終了させるようにします。
  • 条件分岐IFを設定します。
  • 条件式を入力します。
    ${!4の変数名.items.length}
  • 条件分岐範囲内に、KillAttemptを設定します。
  • (任意)強制終了時のメッセージを入力します。

GoogleCalendarに特定のタイトルを持つカスタム予定を登録しておいてその予定をAUTOROに読み込ませる方法は、最終営業日に限らず、やや不規則性の強いスケジューリングで可能できます。

 

# Googleカレンダーから予定を取得
+get_google_calendar_events_t:
  action>: GetGoogleCalendarEvents
  provider: ''
  calendar_id: ''
  from: ${moment().utcOffset(540).format('YYYY-MM-DDT00:00:00Z')}
  to: ${moment().utcOffset(540).format('YYYY-MM-DDT23:59:00Z')}
  query: 'RC_最終営業日'
  maxResults: 250
  meta:
    display:

# 変数に保存
+store_value_calendarEvents:
  action>: StoreValue
  key: calendarEvents
  value: +get_google_calendar_events_t

# 真のとき_最終営業日の予定が存在しなかった時
+if_calendarEvents_is_none:
  if>: ${!calendarEvents.items.length}
  _do:

    # 強制終了
    +kill_attempt_none:
      action>: KillAttempt
      message: '最終営業日ではありませんでした。ワークフローを終了します。'

<GoogleCalendar>最終営業日/月末/GetGoogleCalendarEvents/Googleカレンダー

このページは役に立ちましたか?