
Free, open-source Apps Script tools for Google Sheets, Gmail, Docs, Forms and Calendar. Each one is a single file you paste into Extensions → Apps Script: no add-on to install, no subscription, and your data stays in your Google account. All MIT licensed.
| Script | What it does | Guide |
|---|---|---|
| Sheets Mail Merge | A personalized Gmail to every row, using a Gmail draft as the template. Attachments, inline images, a different file per person, never sends twice. | Mail merge for free · Per-person attachments |
| Sheets Doc Merge | One PDF per row from a Google Docs template (certificates, invoices, letters), optionally emailed. An open-source Autocrat alternative. | PDFs and certificates · Invoices |
| Sheets Deadline Reminders | Emails people every morning about rows due soon. Done/Paid checkbox to stop. | Automatic reminders · Expiration dates |
| Sheets to Calendar | Rows become Google Calendar events and update when you edit them. Hourly sync. | Sheets to Calendar |
| Gmail CSV to Sheets | Imports CSV attachments from matching emails into a sheet every hour. Append or replace. | Import CSV from Gmail |
| Dependent Dropdowns | The second dropdown follows the first on every row, chains to 3+ levels, and clears choices that no longer fit. | Dependent drop-down lists |
| Drive Upload Form | A public page where anyone uploads files into your Drive folder, no Google account needed. Logged in a sheet, with size, type, password and rate-limit guardrails. | Uploads without sign-in |
| Count and Sum by Color | COUNTBYCOLOR and SUMBYCOLOR formulas: count or total cells by fill or text color, with a one-click refresh. |
Count cells by color |
| Drive CSV to Sheets | Drop CSV or Excel files in a Drive folder and they’re imported into your sheet every hour. Append or replace, never twice. | Auto-import from Drive |
| Sheets Edit Tracker | Automatic “created” or “last updated” timestamps when rows are edited, plus an Edit Log of who changed what. | Automatic timestamps |
| Row Cleanup | Move rows to another tab when Status = Done, delete blank or zero rows, archive old rows nightly. Simple rules. | Move or delete rows |
| Time Zone Convert | TZ_CONVERT formula: convert date-times between any time zones, daylight saving handled, whole ranges at once. |
Convert time zones |
| Gmail to Sheets | Copy matching emails into rows hourly and pull out fields like order number and total. Your column names are the setup. | Extract data from Gmail |
| Form Edit Links | Every Google Form response’s edit link in your response sheet, past and future, so answers can be changed later. | Edit form responses |
| Import Refresher | Re-fetch IMPORTXML, IMPORTHTML, IMPORTDATA and IMPORTRANGE every 1 to 60 minutes, even with the sheet closed. | Refresh IMPORTXML |
| Auto Sort | Keep tabs sorted after every edit, by one or more columns, with the header in place. | Sort automatically |
| Sheets Alerts | Email the right person when a cell changes: status becomes Approved, stock drops below 5, a box is ticked. | Email when a cell changes |
| Form Auto-Reply | Your own personalized email to every Google Form respondent, written as a Gmail draft. | Custom confirmation email |
| Form Prefill Links | A pre-filled Google Form link for every row, matched by question title. | Prefill a form from a sheet |
Hit a free-tier limit on an add-on? See free alternatives to paid Google Sheets add-ons.
Code.gs, and save.The first run shows “Google hasn’t verified this app”, because it’s your own unpublished script: Advanced → Go to (your project name) → Allow. Nothing is sent to any outside server.
{{Prefilled Link}}).Found a bug or want a feature? Open an issue on that script’s repo.