Skip to main content
All case studies
AI & Automation

Thousands of Certificates, Payment Reminders and Payslips Sent Automatically From Google Sheets

Case study: cloud automation for a training provider, generating thousands of certificates from Google Sheets and Slides, then sending payment reminders, e-certificates and payslips through Gmail.

Share

Share to Instagram Stories

Preparing image…

  1. The link is copied.
  2. Download the image, then post it to Instagram Stories from your phone.
  3. Add a Link sticker to your Story and paste the link.
Download image

Instagram Stories can only be posted from the phone app.

Share to TikTok

Preparing image…

  1. The caption and link are copied.
  2. Download the image, then post it as a photo on TikTok.
  3. Paste the caption before you post.
Download image

Easiest to post from the TikTok app on your phone.

Client
Training provider
Role
Automation Engineer
Tools
Google Apps Script, Google Sheets, Google Slides, Gmail, Google Drive
A bulk certificate data sheet with a custom Gas Buatin Sertifikat menu, and an automatic mailer menu for sending emails, with participant data blurred

A training provider issues thousands of certificates to participants every period. The process depended on high-spec office computers and error-prone manual input, so the company kept spending on hardware.

I moved the whole certificate process to the cloud with Google Apps Script. After that, I automated the repetitive communication too: payment follow-up emails, e-certificate delivery and employee payslips. The company's name and all participant data in this case study are anonymized.

The problem: certificates tied to one computer

Producing thousands of certificates the old way needed a powerful computer and many manual steps. Every step was a chance for a typo, and every extra batch meant more admin time.

Before

  • Participant data typed into Excel
  • Word template, exported through mail merge
  • Files renamed one by one
  • Uploaded to Google Drive by hand

After

  • Data in Google Sheets as the single source
  • Google Slides template, exported automatically by Apps Script
  • File names generated automatically
  • Saved straight into a structured Drive folder

What I did

One data source with its own menu

All certificate data lives in one sheet. Certificate numbers are built by a formula from the existing data, so nothing is typed twice. To control the process, I added a custom menu in Google Sheets: run everything, run only the checked rows, stop and reset the process, or clear the status column. Each row's status updates live while the bulk run is going.

The Bulk Data sheet with columns for status, batch, template, number, date, name, code, certificate, training date and outline, with the Gas Buatin Sertifikat menu open
The certificate data sheet with its custom menu. Numbers, participant names, class codes and course details are blurred.

Processed in batches so it never hits the time limit

Apps Script has a 6-minute limit per execution, and thousands of certificates take longer than that. So the script processes 100 rows per batch, records the last row it finished, and schedules the next batch with a trigger a minute later. A flag also stops the same run from starting twice.

The Apps Script editor showing column settings, a batch size of 100, a one-minute gap between batches, the trigger function name and the spreadsheet's custom menu
Script settings: batch size, the gap between batches and the custom menu. Spreadsheet and folder IDs are blurred.

Results land neatly in Drive

Finished certificates are saved automatically per batch and per participant, with consistent file names. The team no longer downloads, renames and re-uploads anything.

A Google Drive folder per batch and per participant holding two certificate PDFs with automatically generated file names
The output folder in Google Drive. The participant's name is blurred.

Payment reminders, e-certificates and payslips

The second part connects Google Sheets to Gmail. From one place, the system:

  • Sends payment follow-up emails to customers who haven't responded, based on the status in the sheet.
  • Sends e-certificates to participants once the training is over.
  • Distributes payslips to employees securely and in a structured way.

Each email is composed automatically from its row's data, and the sent status is written back to the sheet. Sending can run for every row or only the checked ones. That matters because Apps Script caps email recipients per day, at 1,500 for Google Workspace accounts according to its quota page.

The Data Follow Up sheet with an Email Sender menu, training date columns, a Reminder subject line and a formula that builds each email from its row's data
The payment follow-up sheet. Names, amounts and email bodies are blurred.
The Send E-mail E-Certificate sheet with a status column recording when each email was sent, with participant data blurred
E-certificate delivery: the send time is logged automatically in the status column. Participant data is blurred.

Results

  • Spending on high-end computers for certificate production dropped significantly, since the process runs in the cloud.
  • Less admin time goes into repetitive tasks.
  • Thousands of participant records are processed automatically and accurately.
  • Payment response rates went up, manual errors went down, and important documents go out on time and consistently.
Certificates generated automatically in the cloud
1000s
Rows per batch, scheduled automatically
100
Automatic emails: reminders, e-certificates, payslips
3

What I learned

The automation that matters most isn't always the most sophisticated one, but the one that removes the dependence on a single person or a single machine. Once the data sits cleanly in one sheet, the next steps, from generating certificates to sending emails, are just a matter of connecting them. I wrote about when Google Sheets is enough as a data source like this in When Google Sheets Is Enough as a Web App Database, and When to Move On.

Found this useful? Share it with a friend or your team.

Share

Share to Instagram Stories

Preparing image…

  1. The link is copied.
  2. Download the image, then post it to Instagram Stories from your phone.
  3. Add a Link sticker to your Story and paste the link.
Download image

Instagram Stories can only be posted from the phone app.

Share to TikTok

Preparing image…

  1. The caption and link are copied.
  2. Download the image, then post it as a photo on TikTok.
  3. Paste the caption before you post.
Download image

Easiest to post from the TikTok app on your phone.

Is your team still doing something by hand?

Tell me about it, and let's find the fix together.