Scheduled jobs
Run work automatically on a timer, nightly, hourly, on a schedule.
Scheduled jobs run work on a timer rather than in response to a record change, nightly cleanups, recurring reports, periodic integrations, escalations. They are how the platform does things while nobody is watching, and getting the cadence, time zone and bounding right is what keeps them from becoming a performance problem.
- What can be scheduled
- Timing, schedules and time zones
- Making jobs safe
- Common mistakes
- Try it Yourself
Scheduled jobs run work on a timer rather than in response to a record change, nightly cleanups, recurring reports, periodic integrations, escalations. They are how the platform does things while nobody is watching, and getting the cadence, time zone and bounding right is what keeps them from becoming a performance problem.
What can be scheduled
Timing, schedules and time zones
Jobs run periodically (daily/weekly/monthly), once at a set time, or on demand. They obey a time zone, so a "midnight" job depends on which zone you set.
Making jobs safe
- Bound every query, a date filter and/or
setLimit()so it can't run away as data grows. - Log progress with
gs.info()so a silently failing job is noticed. - Stagger many small jobs rather than one giant one that pins a node.
- Consider
setWorkflow(false)on bulk writes if you don't want business rules firing per row.
Common mistakes
- Ignoring the time zone and scheduling into peak load.
- Unbounded queries that grow until the job times out.
- No logging, so a broken job goes unnoticed for weeks.
- Firing business rules a million times in a bulk update.
▸ Press Run to execute.
Runs in a sandbox in your browser. Mock gs and GlideRecord and sample data are provided.