A digital agency built on thinking, for the global financial services industry.

Making monthly reports smarter, not just faster

The real upgrade to monthly reporting isn't that it runs itself, it's what marketers can finally see in the data. Automating the data collection just cleared the way for AI to spot the patterns and connections that used to get missed entirely.

Geometric cube with city in background

AI has changed what "reporting" means for marketing teams. It used to be a monthly scramble of logging into half a dozen platforms, exporting CSVs, and copying and pasting numbers into a spreadsheet.

Now, with the help of AI, pulling data has become background work, freeing up more time for the part that actually adds value: the data analysis. The tool doing that heavy lifting is one most marketers have never used, and it’s called Google Apps Script.

Every marketer builds their reports a bit differently, and there's no single right way to do it. Some connect platforms straight into a dashboard tool like Data Studio and stop there. At Indulge, we add one extra layer: a Google Sheet that sits between the raw data and Data Studio, built and kept up to date by Apps Script. It's not the only way to run reporting, but it's the approach that's worked best for us, and it's worth walking through why.

Using Apps Script to automate data collection

If you're a marketer and not a developer, Apps Script can come across as a fairly technical platform. What changed things for us was using Claude to guide us through the setup, providing us with the relevant scripts and settings to configure Apps Script.

In practice, the setup is straightforward once it's built, but the initial setup work can take some time. We connect the Apps Script extension to a Google Sheet, and from there it can pull data on a schedule without anyone touching it.

The general rule is that if a platform has an API, Apps Script can be set up to pull data from it automatically. This covers most tools in a typical reporting stack, including Google Analytics, Google Search Console, Google Ads, Ahrefs, and SEOmonitor, to name a few.

What if a platform does not have an API?

You may find that some platforms, such as LinkedIn, don't have APIs. For cases like this, we take the raw data export and drop it into a dedicated Google Drive folder. From here, you can give Claude the folder ID, which will then configure Apps Script to pull data from these raw exports instead of via the platform itself, and input that data into the same connected spreadsheet.

This gives teams the ability to include data from any source, whether it has an API or not, without worrying about connections between platforms. Every source ends up processed the same way, so there's no gap in reporting just because a platform doesn't offer a clean integration.

Why we use Apps Script over connecting apps directly through Data Studio

Data Studio can connect directly to most of these platforms without any of this. So why add the extra layer? Because a Google Sheet as the middle step gives us something Data Studio's native connectors don't: a clean, structured export we can hand straight to Claude.

Once the data's sitting in a Sheet, we can drop it into Claude and have it analyse the numbers rather than just visualise them. Unlike humans, Claude has the capacity to crunch huge datasets faster and much more efficiently than we can.

Take search terms, for example. We can hand Claude several years worth of data at once, meaning it can:

  • Spot a search term that has quietly been declining over a long period of time.

  • Catch seasonal patterns that are only identifiable when you have a few years worth of data to compare.

  • Use sources from all across the web to align a traffic dip with an algorithm update or a news item.

It's not limited to one tab either. Because every data source sits in the same sheet, Claude can connect the dots between them, even when the data comes from entirely different platforms. For example, Claude can check a spend increase in the Google Ads tab against the sessions and conversions for that channel in the GA4 tab for the same period, confirming the extra spend actually drove the extra traffic. That's a connection that's easy to miss when you're checking each report on its own, but obvious once Claude can see both at once.

So, what does this mean for marketers? It means less time on data collection, and more time explaining what it actually means. Apps Script handles the data, Claude handles the crunching, and reporting stops being a monthly chore and starts becoming a conversation with the numbers.