Hoe u de best presterende Google Ads-zoektermen naar Google Spreadsheets exporteert
Hoe u de best presterende Google Ads-zoektermen naar Google Spreadsheets exporteert
Hoe u de best presterende Google Ads-zoektermen naar Google Spreadsheets exporteert

Hoe u de best presterende Google Ads-zoektermen naar Google Spreadsheets exporteert met Apps Script

Vond u dit artikel leuk?
Share it on social media!
Inhoud

U bent al bekend met de pijn als u Performance Max- of brede zoekwoordcampagnes uitvoert. Google verbergt de echte zoekopdrachten. Dit script brengt ze terug. Het maakt rechtstreeks verbinding met uw Mijn Klantencentrum, pakt de geconverteerde zoekopdrachten op en plaatst ze in een Google Spreadsheet met berekende CPA en conversieratio.

Ons script, "Hoe u de best presterende Google Ads-zoektermen kunt exporteren naar Google Spreadsheets met behulp van Apps Script", is perfect voor bureaus die meerdere klanten beheren of voor marketeers die niet langer willen gokken.

Let’s break it down.

What Export Top Performing Google Ads Search Terms Script Does

  • Haalt 6 maanden aan querygegevens op over alle campagnes
  • Filtert rommel: merktermen en ruis met een lage conversie
  • Bereken de kosten per conversie en het conversiepercentage
  • Zet alles in een overzichtelijk Google Sheet, één tabblad per account

Een Google Ads-script toevoegen

In het gedeelte Scripts worden alle bulkautomatiseringsinstellingen binnen Google Ads MCC ingesteld.

1. Log in to your MCC (Manager Account) and go to Tools > Bulk Actions > Scripts

2. Click the blue plus (+) button to create a new script

Hiermee open je de scripteditor. Maak je geen zorgen, je hoeft niet helemaal opnieuw te coderen. Je plakt een script dat al geschreven is. Door op deze knop te klikken, wordt een lege scriptcontainer voor je automatisering aangemaakt.

Geef je script een naam

Het geven van een naam aan uw script is essentieel voor het beheer en de planning op de lange termijn.

3. Name the script so it’s easy to identify later

Bovenaan het scripteditorvenster ziet u een veld waarin u een naam kunt invoeren. Gebruik iets duidelijks, zoals 'Rapport best presterende zoektermen'. Zo herkent u het script later gemakkelijker wanneer u meerdere scripts of accounts beheert.

You can name it Top Performing Actual Search Terms and drop in the script (included at the bottom of this post).

Geef je script een naam

Geef het script een naam

4. Paste the entire script into the editor

function main() {
// Set the destination Google Sheet URL
var spreadsheetUrl = 'Paste Your Google Sheet URL Here';

// Get the account name to dynamically name the sheet
var accountName = AdsApp.currentAccount().getName();

// Use the account name to label the tab inside the spreadsheet
var sheetName = accountName + ' - Top Performing Terms PC 90 Days';

// Open the spreadsheet by URL
var spreadsheet = SpreadsheetApp.openByUrl(spreadsheetUrl);

// Get the sheet by name, or create it if it doesn't exist
var sheet = spreadsheet.getSheetByName(sheetName) || spreadsheet.insertSheet(sheetName);

// Clear any existing data from the sheet
sheet.clear();

// Write header row to the spreadsheet
sheet.getRange('A1').setValue('Campaign Name');
sheet.getRange('B1').setValue('Ad Group Name');
sheet.getRange('C1').setValue('Search Term');
sheet.getRange('D1').setValue('Conversions');
sheet.getRange('E1').setValue('Conversion Value');
sheet.getRange('F1').setValue('Cost Per Conversion (CPA)');
sheet.getRange('G1').setValue('Conversion Rate (%)');

// Set the custom date range for reporting (format: YYYYMMDD)
var startDate = '20230315';
var endDate = '20240915';

// Build the query from the Search Query Performance Report
var report = AdsApp.report(
"SELECT CampaignName, AdGroupName, Query, Conversions, ConversionValue, Cost, Clicks " +
"FROM SEARCH_QUERY_PERFORMANCE_REPORT " +
"WHERE Conversions > 0 " +
"DURING " + startDate + "," + endDate
);

// Get report rows and set starting row for data insertion
var rows = report.rows();
var rowNumber = 2;

// Iterate through each row of the report
while (rows.hasNext()) {
var row = rows.next();

// Lowercase the search term for consistent brand filtering
var searchTerm = row['Query'].toLowerCase();
var conversions = parseFloat(row['Conversions']);

// Skip rows with less than 1 conversion
if (conversions < 1) continue;

// Exclude branded terms to avoid polluting the report
if (searchTerm.includes('parker chase') || searchTerm.includes('parker-chase') || searchTerm.includes('endeavor schools')) {
continue;
}

// Optional generic filter - add or remove terms here
if (
searchTerm.includes('creative') ||
searchTerm.includes('learning') ||
searchTerm.includes('content')
) {
continue;
}

// Extract cost and click values to calculate performance
var cost = parseFloat(row['Cost']);
var clicks = parseFloat(row['Clicks']);

// Calculate cost per conversion (CPA)
var cpa = conversions > 0 ? cost / conversions : 0;

// Calculate conversion rate
var conversionRate = clicks > 0 ? (conversions / clicks) * 100 : 0;

// Format values
cpa = cpa.toFixed(2);
conversionRate = conversionRate.toFixed(2);

// Write the row to the spreadsheet
sheet.getRange(rowNumber, 1).setValue(row['CampaignName']);
sheet.getRange(rowNumber, 2).setValue(row['AdGroupName']);
sheet.getRange(rowNumber, 3).setValue(row['Query']);
sheet.getRange(rowNumber, 4).setValue(conversions);
sheet.getRange(rowNumber, 5).setValue(row['ConversionValue']);
sheet.getRange(rowNumber, 6).setValue('$' + cpa); // Include dollar sign for CPA
sheet.getRange(rowNumber, 7).setValue(conversionRate + '%'); // Add percentage symbol

// Move to the next row in the sheet
rowNumber++;
}

// Log how many rows were processed
Logger.log('Export completed. Total rows processed: ' + (rowNumber - 2));
}

Wat u in het script kunt aanpassen

The script includes several marked settings you can adjust before running it. These are all inside the script's comment blocks and are meant to be changed based on your specific goals, reporting range, or formatting preferences.

Here’s a breakdown of what you can modify and why:

1. Spreadsheet URL

var spreadsheetUrl = 'https://docs.google.com/spreadsheets/d/xxxxx/edit';

What it does:
This is where the script sends your data. Replace the placeholder URL with the link to your Google Sheet. If you're using multiple email addresses, ensure the Sheet is shared with the Google account tied to your MCC.

2. Date Range Settings

var startDate = '20230315';
var endDate = '20240915';

What it does:
This controls the reporting window. Dates must be formatted as YYYYMMDD. You can adjust these to match whatever time frame you're analyzing, the last 30 days, the last 90 days, custom quarterly ranges, etc.

3. Sheet Name Behavior

var sheetName = accountName + ' - Top Performing Terms PC 90 Days';

What it does:
This line dynamically names the Sheet tab based on the account running the script. You can change the text string portion ('—Top Performing Terms PC 90 Days') if you want to label reports differently. This is useful when running across multiple brands or sub-accounts.

4. Branded Term Filtering

if (searchTerm.includes('parker chase') || searchTerm.includes('parker-chase') || searchTerm.includes('endeavor schools')) {
continue;
}

What it does:
This section excludes any branded terms from your report. You can update this list by adding or removing .includes() conditions. For example, if you want to exclude “MyBrand,” just add:

|| searchTerm.includes('mybrand')

Gebruik consequent kleine letters, aangezien het script alle zoekopdrachten naar kleine letters omzet.

5. Generic Term Filtering

if (
searchTerm.includes('creative') ||
searchTerm.includes('learning') ||
searchTerm.includes('content')
) {
continue;
}

What it does:
This optional filter weeds out terms that aren’t brand-specific but still muddy the data, like “learning” or “creative.” You can add or remove filters here based on what you consider noise.

6. Performance Threshold

if (conversions < 1) continue;

What it does:
This line removes queries with no conversions. You can increase this threshold if you want, only for higher-performing terms. For example, change to:

if (conversions < 3) continue;
...to include only search terms with 3+ conversions in the date range.

7. Sheet Output Formatting

sheet.getRange(rowNumber, 6).setValue('$' + cpa);
sheet.getRange(rowNumber, 7).setValue(conversionRate + '%');

What it does:
This controls how CPA and conversion rate are written on the sheet. You can edit or delete the string additions to remove symbols (e.g., $ or %).

Uitvoervelden

Zodra het script succesvol is uitgevoerd, wordt je Google Sheet gevuld met een gestructureerde tabel. Elke rij vertegenwoordigt een zoekterm die binnen het opgegeven datumbereik ten minste één conversie heeft opgeleverd.

Close-up van Google Sheet met een overzichtelijke opmaak van de prestatiegegevens van de best presterende zoekwoorden

Het Google Sheet-voorbeeld

Uitvoervelden

Het script genereert een set prestatiekolommen in je Google Sheet, die een duidelijk beeld geven van hoe elke zoekterm bijdraagt. Deze kolommen omvatten de namen van de campagnes en advertentiegroepen om bij te houden waar de term is geactiveerd, de zoekterm die de gebruiker daadwerkelijk heeft ingetypt, het aantal conversies dat het heeft opgeleverd, de totale conversiewaarde, de gemiddelde kosten per conversie en het algehele conversiepercentage. Elk veld is cruciaal om te begrijpen wat werkt en welke verspillingen er plaatsvinden.

  • Campaign Name
    Name of the campaign where the ad was triggered

  • Ad Group Name
    An ad group that matched the search term

  • Search Term
    The exact phrase the user typed into Google

  • Conversions
    Number of tracked conversions from that term

  • Conversion Value
    The total value of those conversions, based on your account settings

  • Cost Per Conversion (CPA)
    The average cost to generate one conversion from that search term

  • Conversion Rate (%)
    Percentage of clicks that resulted in a conversion

Hoe dit script verbeterd kan worden

This script is a solid foundation, but it can go further depending on how deep you want your reporting to go. If you manage multiple brands or accounts under one MCC, adding campaign labels or filters can help isolate data by brand or business unit. Scheduling the script to run automatically on a weekly or monthly basis saves time and ensures consistent reports. You can build logic to send alerts when key metrics, such as CPA or conversion rate, cross certain thresholds. For more granular analysis, you can combine this with other reports  KEYWORDS_PERFORMANCE_REPORT to get match-type breakdowns. Inside the Sheet, adding pivot tables or conditional formatting can surface insights faster. And if you want to go visual, the data can be pulled into Looker Studio for dashboards your clients can understand.

  • Voeg campagnelabels of filters op accountniveau toe om gegevens te segmenteren over grote MCC's

  • Gebruik de ingebouwde planning om wekelijks of maandelijks rapporten te automatiseren

  • Activeer e-mailwaarschuwingen wanneer de CPA een bepaalde waarde overschrijdt of het conversiepercentage onder een drempelwaarde daalt

  • Voeg gegevens uit andere rapporten samen, zoals KEYWORDS_PERFORMANCE_REPORT, om de matchtypen te splitsen

  • Voeg basis draaitabelsamenvattingen of voorwaardelijke opmaak rechtstreeks in Sheets toe

  • Verbind de uitvoer met Looker Studio voor visuele prestatiedashboards

Slotgedachten: Aangedreven door Bright Vessel

Bij Bright Vessel bouwen we automatiseringstools op maat zoals deze voor klanten die duidelijke prestatie-inzichten nodig hebben in overvolle advertentieomgevingen. Bent u het zat om door onvolledige dashboards te spitten of vijf handmatige exports uit te voeren om de benodigde gegevens te verkrijgen? Dit script is slechts een van de vele manieren waarop we het proces stroomlijnen.

Bekijk onze gerelateerde walkthrough over "Google Ads-doelstatus controleren in MCC-accounts met behulp van Google Sheets en Apps Script" voor een andere methode om tracking op grote schaal te automatiseren.

Need a version of this that integrates with Slack, builds Looker dashboards, or connects multiple ad accounts into a master sheet? We can make it. Laten we praten.

    Ontvang uw gratis SEO-audit

    Gratis SEO-auditformulier

    "*" indicates required fields

    Dit veld is bedoeld voor validatiedoeleinden en moet ongewijzigd blijven.
    Inhoud
    Vond u dit artikel leuk?
    Share it on social media!
    Ontvang uw gratis SEO-audit

    Gratis SEO-auditformulier

    "*" indicates required fields

    Dit veld is bedoeld voor validatiedoeleinden en moet ongewijzigd blijven.
    Ontvang uw gratis SEO-audit

    Gratis SEO-auditformulier

    "*" indicates required fields

    Dit veld is bedoeld voor validatiedoeleinden en moet ongewijzigd blijven.
    Vond u dit artikel leuk?
    Share it on social media!

    Bekijk een andere blogpost!

    Terug naar alle blogberichten

    Laten we samenwerken!

    © 2024 Bright Vessel. Alle rechten voorbehouden.
    chevron-downpijl-links