Sheetspin logoSheetspin
Automation6 min read

How to Send Automated Email Reminders from Google Sheets

A spreadsheet full of renewal dates, contract end dates, or deadlines is only useful if something looks at it before those dates arrive. Left to a human, it never happens on time.

The fix is a Google Sheet that emails you a heads-up on its own. There are two ways to get there: write a small Apps Script that runs every morning, or provision one that already does it. This guide covers both.

The DIY way
  • Create a Sheet with name, due date, and notes columns
  • Open Extensions → Apps Script and paste a scan function
  • Loop the rows, comparing each due date to a lead window
  • Call MailApp.sendEmail for everything coming due
  • Add a daily time-based trigger — then maintain it yourself
The owned way
  • Pick the app from the catalog
  • Fill in a short form — no code
  • One click provisions it into your Google account
  • It runs as you, in your Drive, yours to keep
Spin up Reminder Radar in one click

The DIY way

The DIY route is a time-based Apps Script trigger that scans your sheet each morning and emails anything due within a lead window.

function run() {
  var LEAD_DAYS = 7;
  var TO = 'you@example.com';
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('items');
  var rows = sheet.getDataRange().getValues();
  var now = new Date().getTime();
  var lead = LEAD_DAYS * 86400000;
  var due = [];
  for (var i = 1; i < rows.length; i++) {
    var name = rows[i][0], date = new Date(rows[i][1]);
    if (!name || isNaN(date.getTime())) continue;
    var diff = date.getTime() - now;
    if (diff >= -86400000 && diff <= lead) {
      due.push('• ' + name + ' — due ' +
        Utilities.formatDate(date, Session.getScriptTimeZone(), 'MMM d, yyyy'));
    }
  }
  if (due.length) {
    MailApp.sendEmail(TO, due.length + ' item(s) due soon', due.join('\n'));
  }
}
A minimal daily reminder scanner in Apps Script.

The DIY way, step by step

Put your data in a tab called "items" with three columns: name, due_date, notes. Then open Extensions → Apps Script and paste the function above.

It reads every row, parses the due date, and collects anything falling inside a seven-day lead window (plus a one-day grace for same-day items). If the list is non-empty, it sends you a single digest email. Nothing due means no email.

Run it every morning with a trigger

A function only helps if it runs on its own. In the Apps Script editor open Triggers (the clock icon), add a trigger for run(), choose "Time-driven" → "Day timer" → 8am–9am, and save. Google runs it on their servers — your computer can be off.

The first run prompts you to authorize the script. That is expected for any script you just wrote; approve it once and the daily schedule takes over.

Where the DIY path gets tedious

The script works, but every change means going back into the code or the raw Sheet: adding a reminder is a new row, changing the lead time is editing a constant, and there is no interface for anyone who is not comfortable in a spreadsheet.

That is the gap the one-click version closes.

The one-click alternative: Reminder Radar

Reminder Radar is this exact automation, provisioned into your own Google account: a daily cron plus a password-protected admin page. You add reminders and change the lead window from the admin page — never touching the Sheet — and the daily trigger reads your settings live.

It installs as a Drive folder, a Sheet, and an Apps Script web app that runs as you. No server, no subscription, and the data is yours. You can still open the Sheet and the code anytime; you just do not have to.

Provision Reminder Radar into your own Google account

Track renewals, deadlines, warranties, or contracts. A daily trigger checks what is coming due within your lead window and emails a heads-up. Add reminders and change settings from within Sheetspin — no spreadsheet needed.

Frequently asked questions

Can Google Sheets send email automatically?

Yes. Apps Script (Extensions → Apps Script) can send email with MailApp, and a time-based trigger runs it on a schedule on Google’s servers — no computer left on.

How many emails can it send per day?

Consumer Gmail accounts allow ~100 recipients/day via Apps Script; Google Workspace accounts allow ~1,500. A daily digest to yourself stays well under either limit.

Do I have to keep my computer on?

No. Time-based triggers execute on Google’s infrastructure, so reminders send whether or not your machine is on.

← All guidesBrowse the catalog →