Robotic Crowd

Robotic Crowd

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

Author: Asao Nakamura 197 views

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

 GetGoogleCalendarEvents

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

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

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

 ワークフローの設定例

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

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

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

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

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

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

 

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

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

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

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

3のスケジュール設定により実行されたワークフローの内部で、実行時点の日付において2で登録した予定が存在するか判断します。
  • プロバイダーIDとカレンダーIDに、予定を登録したカレンダーのコネクションとカレンダーを指定します。
  • 「取得期間の開始日時」に以下を入力します。 ${moment().utcOffset(540).format('YYYY-MM-DDT00:00:00Z')}
  • 「取得期間の終了日時」に以下を入力します。 ${moment().utcOffset(540).format('YYYY-MM-DDT23:59:00Z')}
  • 「検索ワード」に2で指定した予定のタイトルを入力します。
    RC_最終営業日
  • GetGoogleCalendarEventの結果を変数に保存します。
条件分岐を設定し、4で予定が取得されなかった(最終営業日ではなかった)場合にワークフローを強制終了させるようにします。
  • 条件分岐IFを設定します。
  • 条件式を入力します。
    ${!4の変数名.items.length}
  • 条件分岐範囲内に、KillAttemptを設定します。
  • (任意)強制終了時のメッセージを入力します。

# 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カレンダー

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