Scheduler

Scheduler は 1 つの Space に登録する繰り返し実行の予約です。Script 1 つと実行する時刻を結びつけておくと、その時刻になるたびにサーバーがその Script を実行します。たとえば、服屋のショッピングモールで在庫が 0 の商品を探して取引先の発注窓口を呼び出す Script を毎日 1 回実行したい場合は、その Script を指し示す Scheduler を 1 つ作成しておきます。

Scheduler は CMA で管理する Space の下位リソースであり、パスは /spaces/{spaceId}/schedulers を基準とします。公開(publish)という概念がなく、sys.version もありません。作成するとすぐに予約に入り、修正にバージョンヘッダーは必要ありません。その代わり、2 つの点が他のリソースと異なります。実行する Script は作成後に変更できず、作成や修正を行うには Space の設定権限のほかに その Script の実行権限 が別途必要です。実行結果は SchedulerLog として残り、成功した実行は 1 時間後、失敗した実行は 3 日後に消えます。

リソース構造

以下は Scheduler を作成したときのレスポンスです。sys に識別子と参照が、本文に名前・実行時刻・有効かどうかが入ります。

{
  "sys": {
    "id": "7kQm2ZbTn4Rc9WvXpL3dHsY6fJ",
    "type": "Scheduler",
    "space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
    "script": { "sys": { "id": "3trmXRMKq7bd0Prbef1NcZ", "type": "Refer", "targetType": "Script" } },
    "createdBy": { "sys": { "id": "9dLmQ2pVnRb8sTfWcXd3LhJ7gK", "type": "Refer", "targetType": "User" } },
    "createdAt": "2026-08-26T01:20:07.442Z",
    "updatedBy": { "sys": { "id": "9dLmQ2pVnRb8sTfWcXd3LhJ7gK", "type": "Refer", "targetType": "User" } },
    "updatedAt": "2026-08-26T01:20:07.442Z"
  },
  "name": "在庫発注",
  "cronExpression": "0 0 * * *",
  "activated": true
}

主なキー:

  • sys.id: Scheduler の一意な識別子です。単一取得・修正・削除パスの {schedulerId} に入ります。
  • sys.script: この予約が実行する Script です。作成時にのみ指定でき、以降は変更できません。 別の Script を実行するには新しい Scheduler を作成します。
  • name: コンソールに表示されるラベルです。実行には使われません。
  • cronExpression: 実行時刻です。5 つの欄(分・時・日・月・曜日)で、UTC で解釈されます。下の 実行時刻の書き方 を参照。
  • activated: 有効かどうかです。false の場合は保存は残り、実行だけ行われません。

sys.version はありません。修正リクエストに X-Weegloo-Version ヘッダーを送りません。

システム属性(sys)

spacescriptcreatedByupdatedByRefer の形({ "sys": { "id", "type": "Refer", "targetType" } })で入ります。

属性タイプ説明
idstringリソースの一意な識別子。
typestringリソースの種類。Scheduler は常に "Scheduler"
spaceRefer<Space>この予約が属する Space
scriptRefer<Script>実行する Script。作成後は不変。
createdByRefer<User>作成したユーザー。実行はこのユーザーの権限で行われます。
createdAtstring (date-time)作成時刻。
updatedByRefer<User>最後に修正したユーザー。
updatedAtstring (date-time)最後の修正時刻。

本文属性:

属性タイプ説明
namestring (1~64)コンソールに表示されるラベル。実行には使われません。
cronExpressionstring (1~128)実行時刻。5 つの欄(分・時・日・月・曜日)、UTC で解釈。
activatedboolean有効かどうか。false の場合は予約から外れ、実行されません。

実行時刻の書き方

5 つの欄を左から 分・時・日・月・曜日 の順で書きます。秒単位の欄はありません。

意味
0 0 * * *毎日 00
30 9 * * *毎日 09
0 * * * *毎時 0 分
*/10 * * * *10 分ごと
0 0 * * 1毎週月曜日 00
0 0 1 * *毎月 1 日 00

*(すべて)、,(リスト)、-(範囲)、/(間隔)が使え、曜日は数字(0707 は日曜日)または名前(SUNSAT)で書きます。

すべての値は UTC で解釈されます。 地域時間との差を計算して入れる必要があり、日付や曜日を指定した時刻では、その差によって実際に実行される日が変わることがあります。

一度も発火しない値は保存されません。 0 0 30 2 *(2 月 30 日)のように、形式は正しくても訪れない日を指す場合は拒否されます。

状態と制約

対象制約
name1~64 文字、必須。
cronExpression1~128 文字、必須。5 つの欄でなければならず、最低 1 回は発火する必要があります。
activated必須。
sys.script作成時に必須。作成後は不変(修正本文で受け取りません)。

動作と権限に関するルール:

  • 2 つの権限が同時に必要です。 ロール(SpaceRole)の settingsSETTING_SCHEDULER があり、それとは別に対象の Script に対する Execute 権限が必要です。作成だけでなく、修正・部分修正でも確認します。 実行時刻を変えることはその Script をいつ実行するかを決めることであり、オフのものをオンにすることは実行を開始することだからです。どちらか一方でも欠けていれば、そのリクエストは拒否されます。
  • 実行は sys.createdBy の権限で行われます。 Script 内の :self フィルターもそのユーザーとして解釈されます。修正者が異なっても、実行の主体は変わりません。
  • 作成者が実行権限を失うと自動的にオフになります。 次の実行時刻にサーバーが確認し、実行せずに activatedfalse に下げます。権限が回復しても、自動的にオンにはなりません。
  • 数に上限があります。 1 つの Organization が持てる Scheduler の数はプランごとに決まっています(Free は 1 個、Basic は 5 個、Pro は 30 個、Enterprise は無制限)。その上限を超えると作成が拒否されます。
  • 実行回数は Script と共有します。 1 回実行するたびに、プランの Script 実行回数を 1 つ消費します。Scheduler 専用の実行上限はありません。その上限を超えて OrganizationScript 実行が停止されると、以降に実行時刻を迎える Scheduler は実行されず、activatedfalse に変わります。このときは SchedulerLog が 1 つ残り、sys.error に理由が入ります。その Scheduler はオフになった後、再び予約されることはありません。
  • 逃した実行は補いません。 実行できなかった回があっても、後でまとめて実行することはなく、次の時刻から再び実行します。
  • 使用中の Script は削除できません。 ある Scheduler が参照している Script を削除しようとすると、その削除が拒否されます(Script のエラー を参照)。
  • 公開はありません。 状態値や公開ステップなしに、作成するとすぐ予約に入り、削除も事前ステップなしにすぐ行えます。

SchedulerLog

Scheduler が 1 回実行されるたびに、実行記録が 1 つ残ります。取得専用で、作成・修正・削除エンドポイントはありません。パスは /spaces/{spaceId}/schedulers/{schedulerId}/logs です。

{
  "sys": {
    "id": "5nRt8YcVm2Qb7WxZpK4dGhJ9sL",
    "type": "SchedulerLog",
    "space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
    "requestId": "3trmXRM8dNvQ2LbYpK7fHsJ3gWc4Rt",
    "success": true,
    "createdBy": { "sys": { "id": "7kQm2ZbTn4Rc9WvXpL3dHsY6fJ", "type": "Refer", "targetType": "Scheduler" } },
    "createdAt": "2026-09-03T00:00:02.503Z",
    "updatedBy": { "sys": { "id": "7kQm2ZbTn4Rc9WvXpL3dHsY6fJ", "type": "Refer", "targetType": "Scheduler" } },
    "updatedAt": "2026-09-03T00:00:02.503Z"
  }
}

すべての値が sys の中にあり、本文属性はありません。値のないキーはレスポンスから外れます(上の例には error がありません)。

属性タイプ説明
idstring記録の一意な識別子。単一取得パスの {schedulerLogId} に入ります。
typestring常に "SchedulerLog"
spaceRefer<Space>この記録が属する Space
requestIdstringこの回の実行の識別子。同じ値が ScriptLogsys.requestId に入ります。
successboolean成功したかどうか。
errorany実行回数を使い切って開始すらできなかった回にのみ入ります。 それ以外の場合は、失敗した回でも外れます。実行の途中で失敗した理由は、同じ requestId を持つ ScriptLogsys.value にあります。
createdByRefer<Scheduler>この記録を残した Scheduler です。 ユーザーではありません。
createdAtstring (date-time)記録の作成時刻。
updatedByRefer<Scheduler>createdBy と同じ Scheduler
updatedAtstring (date-time)createdAt と同じです。

scheduler フィールドはありません。 どの Scheduler が残した記録かは sys.createdBy が指し、その targetType"Scheduler" です。sys.updatedBy も同じ Scheduler です。

startedAtendedAtresult と所要時間のフィールドもありません。 1 回の実行にどれだけかかったかと Script が返した値は、同じ requestId を持つ ScriptLog にあります(sys.durationMssys.valuesys.statusCode)。フィールド構成は Script リソースとエンドポイント で扱います。

1 回の実行はログを 2 つ残します。 1 つはこの薄い SchedulerLog で、もう 1 つはその実行自体を収めた ScriptLog です(ScriptLogsys.trigger がこの Scheduler を指します)。2 つは同じ requestId でひとまとまりになります。

記録は実行が終わった後に一度書き込まれ、変わりません。成功した実行は 1 時間後、失敗した実行は 3 日後に消えます。 有効期限を収めたフィールドはレスポンスになく、時が来ると記録は消えます。それより長く残す必要がある値は、Script の中で Content として保存してください。

エラー

Scheduler を扱うときに出会うコードです。すべてのリソースに共通するコードは 共通エラー を参照してください。

コード条件
WGL400069cronExpression が、形式は正しくても一度も発火しない時刻を指しています。
WGL403001呼び出し元のロールに SETTING_SCHEDULER 設定権限がありません。この権限は Scheduler の作成と修正だけでなく、取得・削除と実行記録の取得にも必要です。Scheduler を作成または修正するときは対象 ScriptExecute 権限も併せて必要で、どちらか一方でも欠けていると同じコードで拒否されます。
WGL429001OrganizationScheduler の数がプランの上限に達している状態で、Scheduler を新しく作成しようとしました。

API

以下のすべてのエンドポイントの基準 URL は https://cma.weegloo.com/v1 で、Authorization ヘッダーに CMA を認証する Bearer トークンが必要です。Scheduler には sys.version がないため、修正に X-Weegloo-Version ヘッダーを送りません。

  • Script: Scheduler が実行するリソース。定義構造と statement の種類を扱います。
  • Webhook: 時刻ではなくイベントで Script を実行するリソース。
  • SpaceRole: SETTING_SCHEDULER 設定権限と ScriptExecute 権限を持つロール。
  • Scheduler の概念: 何に使う機能かと、コンソールでの扱い方。