Scheduling Reports in AdapTable

Summary

  • Scheduling in AdapTable allows Reports to be run at a chosen time
  • Report schedules are stored in Export.ReportSchedules and managed from the Export module

AdapTable allows you to schedule Reports to be sent at specific times and days.

Each schedule uses one of two timing models:

  • Recurring — a standard 5-field CronExpression (e.g. weekdays at 09:30 → 30 9 * * 1-5)
  • One-off — a single run at a specified ISO datetime

Hint

This is useful if you need regularly to export data at a particular time, e.g. an "End of Day" report

When configuring a Schedule you will select 4 element:

  • Report (System or Custom)
  • Report Format
  • Destination (System or Custom)
  • Schedule (recurring or one-off)

Breaking Change

  • Prior to Version 23.0 Schedules were stored in a separate Schedule section of State
  • Now the ReportSchedules section in Export State persists them to ensure everything report related is ine one place
Schedules
Fork
  • This example provides two Report Schedules in Export Initial State:
    • Weekday Excel export — recurring cron (30 17 * * 1-5) for the Current Layout system report
    • One-off CSV export — runs once (~1 minute after load) for the JavaScript Frameworks Custom Report
  • We listen to the Report Schedule Ran Event and output an appropriate System Status Message
Try It Out
  • Edit the weekday schedule and change the cron time or destination
  • Suspend the one-off schedule before it fires if you do not want a download

Configuring Report Schedules

Report Schedules are defined, and persisted, in the ReportSchedules section of Export Initial State.

Deep Dive

Anatomy of a Report Schedule

Developer Guide

Providing Report Schedules in Export State

Report Schedules are defined in Export.ReportSchedules in Initial State (alongside custom Reports).

Each ReportSchedule needs a display Name, the ReportName to export, ReportFormat, optional ExportDestination, and a nested Schedule object.

const initialState: InitialState = {
  Export: {
    ReportSchedules: [
      {
        Name: 'Weekday Excel export',
        ReportName: 'Current Layout',
        ReportFormat: 'Excel',
        ExportDestination: 'Download',
        Schedule: {
          IsOneOff: false,
          CronExpression: '30 17 * * 1-5',
        },
      },
      {
        Name: 'One-off CSV export',
        ReportName: 'JavaScript Frameworks',
        ReportFormat: 'CSV',
        ExportDestination: 'Download',
        Schedule: {
          IsOneOff: true,
          RunAt: '2026-05-19T17:30:00.000Z',
        },
      },
    ],
  },
};
1
Add a ReportSchedules section to Export Initial State

The Export section will create the Report Schedule Definitions

2
Provide details of Report being Scheduled

Supply these properties to provide details of what is scheduled:

  • Name — a unique name for the Schedule
  • ReportName — the Report being exported in the Schedule
  • ReportFormat — Format Type of the Report being exported
  • ExportDestination — where the Scheduled report will be sent
3
Either: Recurring schedule (cron)

Set Schedule.IsOneOff to false and provide a 5-field cron string: minute hour day-of-month month day-of-week.

Example: 30 17 * * 1-5 runs at 17:30 on weekdays (Monday–Friday).

4
Or: One-off schedule (RunAt)

Set Schedule.IsOneOff to true and Schedule.RunAt to an ISO datetime (local time) for the single run.

Hint

For a one-off run at design time that fires soon after the grid loads (e.g. in a demo), compute RunAt dynamically (as we do in the demo above)

Managing Schedules in the UI

Report schedules are displayed in the Schedules Tab in the Export section of the Settings Panel.

Hint

Additionally there is a Schedule button in the Export Toolbar, Tool Panel and Status Bar

The Schedules Tab allows you to:

  • open the Wizard to create / edit Schedules
  • suspend or unsuspend Schedules
  • delete Report Schedules

Note

  • Deleting a custom report also removes every ReportSchedule whose ReportName matches that report
  • The UI asks for confirmation when schedules would be removed
UI Step by Step Guide

Scheduling a Report in the Export Wizard

Report Schedule Ran Event

The Report Schedule Ran Event is triggered when a report schedule runs.

The event payload includes full details of the Report that was run on the Schedule.

FAQ

Can I schedule both system and custom reports? Yes, you can schedule any Report available in the grid — both system and custom reports

How many report schedules can I define? There is no fixed limit; each schedule must have a unique Name

Can I have multiple schedules for the same report? Yes — for example different formats, destinations, or run times, each with its own schedule Name.

What cron format does AdapTable use? AdapTable uses the Standard 5-field cron: minute hour day-of-month month day-of-week. For example, 30 9 * * 1-5 is 09:30 on weekdays. The Schedule wizard can build this from presets or you can supply a custom expression.

What happens when a one-off schedule firesor if RunAt is in the past? The report export runs once and remains in state (so you can edit it if you wish). AdapTable does not auto-suspend or delete the Report - that is your prerogative and responsibility.

Can I pause a schedule without deleting it? Yes, use Suspend in the Schedules tab, or suspend functions in Export API.

What happens if I delete a custom report that has schedules? All ReportSchedules targeting that ReportName are removed from state when the report is deleted.

Does a scheduled export use live grid data? Yes. When the schedule fires, AdapTable exports a snapshot of current grid data at that moment. This is exactly the same behaviour as running the report manually at that time.

How do I run a schedule programmatically? Call applyScheduledReport(reportSchedule) on Export API.

How do I know when a schedule ran? Listen for the Report Schedule Ran Event and read reportSchedule from the event info.

Do you still support DaysOfWeek, Hour, and Minute on report schedules? No this was moved in Version 23.0. Use CronExpression for recurring runs and RunAt for one-off runs.