MisaNeco Works Blog

2026-10-19・Automation / Small business / Google Apps Script

Send appointment reminder emails automatically with Google Sheets (free, no add-ons)

No-shows cost small service businesses real money: a hair salon, a dog groomer, a tutor, a cleaner. A reminder the day before helps, but writing those emails by hand every evening is easy to forget.

If you already keep appointments in a Google Sheet, a few lines of Google Apps Script can send the reminders for you. It is free and needs no add-ons. This guide takes about 15 minutes.

What you will build

Step 1. Set up the sheet

Create a Google Sheet. Rename the first tab to Appointments and add these headers in row 1:

A B C D E F
Name Email Date Time Service Reminder sent

Tips:

Step 2. Add the script

In the sheet, open Extensions > Apps Script. Delete anything in the editor and paste this:

// Sends a reminder email the day before each appointment.
// Sheet "Appointments": A Name | B Email | C Date | D Time | E Service | F Reminder sent
const SHEET_NAME = 'Appointments';
const BUSINESS_NAME = 'Your Business Name';

function sendReminders() {
  const sheet = SpreadsheetApp.getActive().getSheetByName(SHEET_NAME);
  const rows = sheet.getDataRange().getValues();
  const tz = Session.getScriptTimeZone();
  const tomorrow = new Date();
  tomorrow.setDate(tomorrow.getDate() + 1);
  const target = Utilities.formatDate(tomorrow, tz, 'yyyy-MM-dd');

  for (let i = 1; i < rows.length; i++) {           // row 0 is the header
    const [name, email, date, time, service, sent] = rows[i];
    if (!email || !(date instanceof Date) || sent) continue;
    if (Utilities.formatDate(date, tz, 'yyyy-MM-dd') !== target) continue;

    const when = Utilities.formatDate(date, tz, 'EEEE, MMMM d') + (time ? ' at ' + time : '');
    const subject = 'Reminder: your appointment tomorrow (' + when + ')';
    const body =
      'Hi ' + name + ',\n\n' +
      'This is a reminder of your ' + (service || 'appointment') + ' with ' + BUSINESS_NAME + ' on ' + when + '.\n\n' +
      'If you need to change or cancel, just reply to this email.\n\n' +
      'See you soon,\n' + BUSINESS_NAME;

    MailApp.sendEmail(email, subject, body);
    sheet.getRange(i + 1, 6).setValue(new Date());     // column F: when the reminder was sent
  }
}

// Run once: sends reminders every day between 9 and 10 am.
function createDailyTrigger() {
  ScriptApp.newTrigger('sendReminders').timeBased().everyDays(1).atHour(9).create();
}

Change Your Business Name to your business name, then click Save.

Step 3. Test it

  1. Add a test row with your own email address and tomorrow's date.
  2. In the Apps Script editor, choose sendReminders in the function menu and click Run.
  3. The first time, Google asks you to allow the script to read the sheet and send email as you. Review the permissions and allow them.
  4. Check your inbox. Column F of the test row should now show the time it was sent.

Run it again: nothing is sent, because column F is already filled in.

Step 4. Run it every day

Choose createDailyTrigger in the function menu and click Run once. The script will now run every day between 9 and 10 am (in the script's time zone, which you can check under Project Settings).

To see or remove the trigger later, click the clock icon (Triggers) on the left of the Apps Script editor. Run createDailyTrigger only once, or you will get duplicate triggers.

Things to know

What else could you automate?

Reminders are one small job. Our free Small Business Automation Check asks for your country, industry and tasks, and shows which admin jobs are easiest to automate and how to begin.

Free tools you can useSmall Business Automation Check
Related articlesSave Gmail attachments to Google Drive automatically (free Apps Script)
A simple inventory tracker with low-stock alerts (Excel or Google Sheets)
Paying freelancers in the US - Form W-9, Form 1099-NEC and a simple tracking sheet