​​10 hands-on Google Apps Script exercises focused on Google Sheets

At the end, there’s one single .gs file you can paste into your Apps Script project. It creates the sheets, seeds data, and lets you run each exercise from a custom menu. How to get set up (once) Exercise 1 — Create & Seed a “Sales” sheet Objective: Learn to create a sheet, write headers/rows, … Read more

Vibe Coding for Beginners: Learn to Code with AI

Getting Started with Vibe Coding 1.1 What is Vibe Coding? Vibe Coding is a way of learning programming that removes fear and friction. Instead of sitting in front of a blank screen, unsure of where to begin, you describe what you want in plain English and use AI to help you turn it into working … Read more

Get Ready to Automate: An Introduction to Your Google Apps Script Exercises

How to Use These Exercises Exercise 1: Hello, World! 👋 Objective: Learn the most basic function of Apps Script: creating a function and logging a message to the execution log. Instructions: Write a script that logs the message “Hello, World!” to the console. Solution: Explanation: Exercise 2: Send a Simple Email 📧 Objective: Use the … Read more

Ultimate Guide to Google Apps Script 100 Common Apps Script Questions

Welcome to Your Ultimate Guide to Google Apps Script Ever find yourself lost in a sea of repetitive tasks within Google Sheets, Docs, or Gmail? Have you ever thought, “There has to be a better way to do this”? There is, and you’ve found it. Enter Google Apps Script, the powerful, cloud-based scripting platform built … Read more

Automating the Testing of 100 Google Apps Script Examples in Google Sheets

Download files When I released my 100 Google Apps Script examples for Google Sheets, one of the most common follow-up requests was: “Can I run all the examples automatically, without launching them one by one?” The answer is yes—and the solution is a master runner function that launches and tests all the functions in the … Read more

28 day guide for Google Apps Script

Download PDF guide Comprehensive 28-day guide to learning Google Apps Script, designed for complete beginners. Each day’s lesson should take less than an hour to complete. How to Use This Guide Welcome to your 28-day journey into Google Apps Script! This guide is designed to take you from a complete beginner to someone who can … Read more

Supercharge Google Docs with Doc Power Tools 10 Must-Have Apps Script Utilities

Google Docs is already a versatile writing tool, but with Apps Script you can make it truly powerful. I’ve created a single-file utility pack called Doc Power Tools that adds a custom menu to your Google Docs with 10 of the most-requested automation features—things like inserting a clickable Table of Contents, cleaning formatting, running mail … Read more

10-Day Google Apps Script Learning Guide

Day 1 – Introduction to Google Apps Script Goals: Topics: Code Example: Practice: Quiz (3 questions): Day 2 – Working with Google Sheets Goals: Topics: Code Example: Practice: Quiz (2 questions): Day 3 – Reading and Writing Ranges Goals: Code Example: Practice: Quiz (2 questions): Day 4 – Loops and Logic in Apps Script Goals: … Read more

Build a Simple Likert-Scale Quiz Web App with Google Apps Script + Sheets

This post walks through what the provided code does and how to set up the Google Sheet it expects. When you’re done, you’ll have a lightweight web app that: What the Code Does (at a glance) 1) doGet(e) — serve the web app 💡 Note about getActiveUser()This returns a non-empty email when your script runs … Read more

100 high impact copy pasteable Google Sheets Apps Script snippets

100 high-impact, copy-pasteable Google Sheets Apps Script snippets  How to use A. Setup & Quality-of-Life 1) Add a Custom Menu Creates a “Sheet Tools” menu with quick actions. function onOpen() {   SpreadsheetApp.getUi()     .createMenu(‘Sheet Tools’)     .addItem(‘Clear Selected Range’, ‘clearSelectedRange’)     .addItem(‘Timestamp Selected Cells’, ‘timestampSelection’)     .addToUi(); } function clearSelectedRange() {   const range = SpreadsheetApp.getActiveRange();   if (range) range.clearContent(); } … Read more