スケジュール起動

スケジュール起動用の Server Hook 定義方法を以下にまとめます。

{
  "kiicloud://scheduler": {
    "<job_name>": {
      "cron": "<cron_expression>",
      "endpoint": "<endpoint_name>",
      "parameters": {
        "arg1": "xxxx"
      },
      "what": "EXECUTE_SERVER_CODE"
    }
    /* Other hooks */
  }
  /* Other paths with hooks */
}

cron_expression で指定した時間が来ると、endpoint で指定した Server Code 内の関数が実行されます。各 Hook 定義には、後ほど実行結果履歴を参照する際に利用する job_name を付けます。また必要に応じて、Server Code に渡すパラメータを parameters プロパティに指定できます。

"kiicloud://scheduler" 以下には複数のスケジュールを定義できます。job_name に対する設定は JSON の name / value ペア(Map)として記述するため、設定ごとに必ず別の job_name を指定するようにします(重複していても、Kii Cloud への登録時、エラーにならないためご注意ください)。異なる名前で同一のスケジュールを定義した場合、設定されている数だけ Server Code 内の関数が実行されます。

cron_expression は次のように表記します。

時間は UTC(協定世界時)で指定してください。

また以下の特殊文字が利用できます。

  • アスタリスク(*):フィールドの任意の値にマッチします。
  • ハイフン(-):範囲指定に使います。
  • スラッシュ(/):間隔値指定に使います。たとえば第 1 フィールド(分)に "0/10" を指定すると「10 分間隔」という意味になります。
  • カンマ(,):複数値(値のリスト)の指定に使います。たとえば第 5 フィールド(曜日)に "MON,WED,FRI" を指定すると「月曜、水曜、金曜」という意味になります。

以下にいくつかの例を挙げます。

#毎時実行
0 * * * *

#毎日 00:01 に実行
1 0 * * *

#平日(月~金)の 05:00 に実行
0 5 * * MON-FRI

#毎日 2 時間おき(0 時、2 時、4 時、6 時…)に実行
0 0/2 * * *

#14:00 から 14:55 までの間、5 分おきに毎日実行
0/5 14 * * *

#週末(土~日)の 11:00 と 16:00 に実行
00 11,16 * * SUN,SAT

なお、cron_expression には以下の制限があります。

  • "*" と "/" は同時に使えません。

    • OK:0/5 14 * * *
    • NG:*/5 14 * * *
  • 1 つの cron 表記アイテム(分、時間、…)で使えるのは、範囲(例:4-7)、間隔値(例:2/5)、リスト(例:0,5,10,15)のいずれか 1 つのみです。複数の指定方法の併用はできません。

    • OK:0,5,10 21-23 * * MON-FRI
    • NG:5-8/2 * * * *
  • 月と曜日は同時に指定できません。

    • NG:0 0 1 1 SUN

以下にスケジュール起動用の Server Hook の例を挙げます。

{
  "DailyMessage_5am": {
    "cron": "0 5 * * *",
    "endpoint": "sendDailyMessage",
    "parameters": {
      "time": "5am"
    },
    "what": "EXECUTE_SERVER_CODE"
  },
  "DailyMessage_10pm": {
    "cron": "0 22 * * *",
    "endpoint": "sendDailyMessage",
    "parameters": {
      "time": "10pm"
    },
    "what": "EXECUTE_SERVER_CODE"
  }
}

この例は、毎日 5:00 と 22:00(UTC:協定世界時)にエンドポイント sendDailyMessage を実行します。またそれぞれの実行時に、異なったパラメータを Server Code に渡しています(この Server Hook と連動する Server Code の例は スケジュール起動のログ記録 を参照してください)。