Practical workflow · Projects from kickoff to payment

Detect a scheduled automation that did not deliver its result

An automation that never starts may send no error. Set up a separate expected-job check in Google Sheets with an alert to your own email address.

Get a deadline tracker, a ready-to-use Apps Script, and setup and alert-testing instructions.

Chill&AutomateUpdated October 1, 20264 min read

Track expected work, not just failures

Illustrative scenario: a Monday report is due at ten. Someone accidentally disables the scenario. No execution fails, but no report is produced. An independent check must know in advance that the report is expected.

We use Google Sheets and Apps Script, a small program attached to the spreadsheet. It runs outside the Make/n8n workflow being monitored. After a deadline, it emails you if the tracker lacks a confirmed result link. It does not identify the cause or validate report contents.

You need a Google account allowed to use Apps Script and authorize access to its spreadsheet and outgoing email. Check organizational permission first. Keep client data out of the tracker: use internal job identifiers, deadlines, and restricted result links.

1. Create the expected-job tracker

Download the deadline tracker. In a new Google spreadsheet, choose File → Import → Upload. Rename the imported sheet exactly Schedule, which the program expects.

Keep the first four columns in order: job, deadline, confirmed result link, and alerted-at time. Each row represents one expected result, such as REPORT-2026-W40. The next week needs a new identifier and deadline. Create rows in advance, rather than only when a report arrives.

Enter a deadline with its timezone offset, for example 2026-10-01T10:00:00-04:00. For testing, use five minutes ago with your actual local offset. The download leaves deadlines blank for you to enter. The program rejects missing or invalid deadlines rather than pretending the check succeeded.

2. Add the supplied program

Download the deadline-check program and open it as text. In the spreadsheet, choose Extensions → Apps Script, replace the default code with the download, and save the project.

Change ALERT_EMAIL at the top to your own work address. Keep LANGUAGE = 'en'. The program does not read email; it uses MailApp to send alerts. Authorize it only under an account permitted to access the tracker. Do not share a password.

Select setupDeadlineCheck in the function menu and click Run. It stores the spreadsheet identifier so scheduled checks can locate it. Then select and run checkDeadlines. Google may request authorization for the required services. If organizational policy blocks it, agree on an approved route instead of bypassing the restriction.

3. Test the alert and its suppression

Set one test row’s deadline in the past and leave result and alerted-at fields blank. Running checkDeadlines should email your address and populate the fourth column.

Run it again: the same row should not produce an ordinary second alert. Clear its alerted-at field and enter a real HTTPS link to a harmless verified test output in the third column. Another run should not alert. Finally try a future deadline with no result; it should not alert early.

If no message arrives, open Executions in Apps Script and inspect the error, Schedule sheet, address, and deadline. Also check spam. Successful script execution does not prove inbox delivery.

4. Schedule the check

Open Triggers → Add Trigger in Apps Script. Choose checkDeadlines, Time-driven, and an hourly interval. Save. Google documents installable triggers; they run under their creator’s account and do not guarantee an exact minute.

An hourly check may wait until its next run. Critical deadlines need an appropriate monitoring service. Apps Script and email have quotas. This example is for a small set of internal jobs, not large-scale operational monitoring.

What counts as a confirmed result?

Enter a link only after checking that the correct output exists for the job and period. A person records it in this route. An integration can populate it later, but only after verifying its result; that integration is outside this tutorial. A missing link can mean no run, a failed run, or a forgotten confirmation, so the alert asks you to investigate.

Monitor the checker too: inspect trigger history regularly, test delivery, and name a backup for the account owner. After resolving a case, record its result. To request another alert for an unresolved job, clear its alerted-at field.

Google documentation reviewed October 1, 2026. This is our example program, tested locally rather than in your Google account. If email sends but recording its timestamp fails, a later run may repeat the alert. Exactly-once delivery is not guaranteed.

Check your result

Do I have enough evidence for the next step?

Checks are temporary reminders on this page. They are not saved and do not verify the outcome for you. Record evidence in your own notes or the downloadable worksheet.