- Ads That Convert
- Posts
- Google Ads data to Google Sheets for FREE
Google Ads data to Google Sheets for FREE
Here's how you can get hourly data into Google Sheets for $0, no strings attached
I shared this a little while ago
Why is it $199/mth for daily refreshes on Supermetics?
To do an API call to ad platforms and dump the response in a Google Sheet
— mitch | Google Ads 🧪 🧬 (@PayPerMitch)
9:20 AM • Oct 5, 2024
Confused with a Claude AI subscription, I thought I could solve this easily, and I did!
Here is exactly how to get hourly refreshes on your Google Ads data to a Google Sheet for $0.
Supermetrics charge $899/mth for this functionality
Dataslayer charge $124.90/mth for this functionality
The Google Ads x Google Sheets extension doesn’t even have this functionality built in as it limits 1 account per sheet AND only allows for daily automated refreshes.
This will cost you $0 to download, install and maintain
And, the best part is that it doesn’t require
Any accounts
Any CC details for free trials
Giving away your account data to 3rd part companies
This is a no-strings attached method WITH a free budget tracker
No, let’s get into it!
How to get set up
Watch THIS VIDEO (<3min) on how to configure everything.
1) Duplicate THIS SHEET.
2) Get your sheet ID from the URL once you duplicate the sheet
3) Copy the script below
function main() {
var today = new Date();
var firstDayOfMonth = new Date(today.getFullYear(), today.getMonth(), 1);
// Open the specific spreadsheet
var spreadsheetId = "YOUR-SHEET-ID-HERE";
var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
var sheet = spreadsheet.getSheetByName("RAW_DATA_EXPORT");
// Create the sheet if it doesn't exist
if (!sheet) {
sheet = spreadsheet.insertSheet("RAW_DATA_EXPORT");
sheet.appendRow(["Account Number", "Account Name", "Date", "Cost", "Conversions"]);
} else {
// Clear existing content if the sheet already exists
sheet.clear();
sheet.appendRow(["Account Number", "Account Name", "Date", "Cost", "Conversions"]);
}
// Check if this is an MCC account
if (typeof AdsManagerApp !== 'undefined') {
// MCC account
var accounts = AdsManagerApp.accounts().get();
while (accounts.hasNext()) {
var account = accounts.next();
AdsManagerApp.select(account);
runReportForAccount(sheet, firstDayOfMonth, today);
}
} else {
// Individual account
runReportForAccount(sheet, firstDayOfMonth, today);
}
Logger.log("Report has been updated in the spreadsheet: " + spreadsheet.getUrl());
}
function runReportForAccount(sheet, firstDayOfMonth, today) {
var report = AdsApp.report(
"SELECT ExternalCustomerId, AccountDescriptiveName, Date, Cost, Conversions " +
"FROM ACCOUNT_PERFORMANCE_REPORT " +
"WHERE Date >= '" + formatDate(firstDayOfMonth) + "' AND Date <= '" + formatDate(today) + "' " +
"ORDER BY Date ASC");
var rows = report.rows();
while (rows.hasNext()) {
var row = rows.next();
sheet.appendRow([
row['ExternalCustomerId'],
row['AccountDescriptiveName'],
row['Date'],
row['Cost'],
row['Conversions']
]);
}
}
function formatDate(date) {
var year = date.getFullYear();
var month = padZero(date.getMonth() + 1);
var day = padZero(date.getDate());
return year + "-" + month + "-" + day;
}
function padZero(number) {
return (number < 10 ? '0' : '') + number;
}
4) Install in your MCC or single account. Authorize and preview
5) Set the script to run hourly
6) Add in the account number for the specific account in coluumn A of the Dashboard tab and add your monthly budget to get detailed metrics