/ EN

One-Line Summary

After taking over a manually maintained ad inquiry report, I realized the work wasn’t hard — it was just repetitive. I used Gemini to write my first Apps Script, which pulls data from the CRM into Google Sheets every workday, organizes it, and sends out a summary email — replacing the original manual update process.


Background

The company had been tracking ad inquiry numbers in a Google Sheet since Q3 2022.

The sheet was originally built by the colleague who handled advertising. Because the team needed ad metrics at monthly reviews, he designed a fixed format: two tabs per month — one for manually entering daily inquiry counts and regional breakdowns, and one that pulled from the first tab to generate charts.

The sheet wasn’t complicated, but it was used consistently for a long time. As people came and went, maintenance got passed around. By the time I got involved, it had landed back on the team without a clear owner.

I figured — it’s just entering numbers, how hard could it be — and said I’d take it on.


The Problem

Once I actually started doing it, I realized the issue wasn’t difficulty. It was repetition.

The expectation was never that someone would update it every single day. In practice, people tended to batch it — once a week, open the sheet, find the right rows, enter the numbers, check the regional breakdowns, make sure nothing had shifted in the formatting. Not a big task, but a consistent one.

The problem with weekly batching was that data would sit stale for days. If someone fell behind or forgot a week, the backlog would pile up. It also meant the advertising optimizer would occasionally flag that the numbers hadn’t been updated — because they actually checked the sheet.

I tried using Gemini in chat mode to help process the data first. That lasted about a week before I realized I was just replacing one kind of manual work with another. Asking the same questions every week, pasting the same data, getting the same output — that wasn’t a solution.

Something this repetitive with fixed rules shouldn’t require a person to do it each time.


What I Did

After taking the Python course, I had a clearer picture of what code could actually handle.

We use Google Workspace across the company — CRM data and the stats sheet both live in Google Sheets. I knew this didn’t need to be a large system. An Apps Script that could fetch, organize, write, and email would be enough.

I worked with Gemini to write my first Apps Script. The main functionality had two parts.

1. Automatic daily data import

I set a time-based trigger so the script runs every weekday at a fixed time. It pulls the latest inquiry numbers from the CRM master sheet and writes them into the stats sheet by date and region.

As part of this, I also restructured the sheet itself. The original format had two tabs per month — one for manual input, one for charts. I consolidated it to a single tab, which made the import logic cleaner and the sheet easier to maintain going forward.

2. Automated summary email

After importing, the script organizes the month’s data and sends me a summary email containing:

  • Inquiry count by region and percentage share
  • Average daily inquiries for the month so far
  • Yesterday’s new leads broken down by source

The whole process took a few days of debugging — mainly around column mapping, date logic, formatting, and trigger configuration.


Results

Once it was running, the task went from “set aside time each week to update this” to “happens automatically every workday.”

The sheet stays current without anyone touching it. Every morning, the summary is already in my inbox — no need to open the sheet or check whether someone remembered to fill it in.

For the advertising optimizer, the update frequency also improved. Numbers that previously came in weekly now accumulate on a workday cadence, making it easier to spot trends as they develop.


What I Learned

This was the first time I took “I know code can do this” and turned it into something that actually runs.

Before this, I understood automation conceptually. But understanding it and shipping something that runs on a schedule without anyone babysitting it are different things.

What this project made concrete: a lot of work that feels annoying isn’t actually difficult — it’s just repetitive, dependent on someone remembering to do it, and quietly draining attention every time it comes up. When a task has fixed rules, it can usually be broken into a process. And a process can usually become a tool.

After this, when I run into recurring manual tasks, my first question is: does this need a person to do it each time, or can it just run? That question became a regular part of how I think about workflow and tooling.


Status

The script is still running. It executes automatically every workday, imports the data, and sends the summary — no manual maintenance required.