De werkzaamheden van een Google Ads specialisten is er de laatste jaren niet gemakkelijker op geworden. Waar je voorheen (zegge ‘vroegah’) aan een zoekwoord, bod en advertentietekst voldoende had om je te kunnen onderscheiden, moet je nu ook rekening houden met onder andere advertentieplanning, doelgroepen, apparaten, locaties, demografie en advertentie-extensies (ook alweer 11 verschillende soorten extensies).

Om te zorgen dat jouw campagnes optimaal zijn ingericht, heb je veel tijd nodig. Tijd die je misschien niet voor elke klant beschikbaar hebt. Om de beschikbare tijd maximaal te benutten, kan je daarom gebruik maken van Ads scripts en routinematige werkzaamheden automatiseren.

Op onze blog zullen we de komende tijd een aantal scripts publiceren die elke SEA-specialist kan helpen haar/zijn werk een stuk leuker te maken.

Non-branded search queries in branded (shopping)campagnes

Wij zijn vast niet de enigen die onze campagne structuur voor Google Shopping campagnes altijd indelen in branded en non-branded campagnes. De nonbranded campagnes hebben een hogere prioriteit, maar hier sluit je branded keywords uit, zodat je deze kan opvangen met je brand campagne en biedingen kan verhogen.

Hoewel in theorie fullproof, in de praktijk komt er nog veel nonbranded verkeer binnen in je branded campagnes. Dat betekent dat je met hoge regelmaat deze zoekwoorden moet uitsluiten van je campagne.

Dat kan makkelijker! Met onderstaand script kan je nonbranded search queries automatisch uitsluiten in je branded campagnes, zodat de splitsing van jouw verkeer optimaal is.

Het script

Dit script is bedoeld voor adverteerders waarbij branded alleen de eigen merknaam bedoeld wordt. Dit geldt bijvoorbeeld voor producenten, zoals onze klant Paula’s Choice. Hier splitsen wij al ons Google Shopping verkeer in zoektermen met en zonder de merknaam ‘Paula’s Choice’. Wanneer je het script toevoegt aan jouw account, zorg er dan voor dat deze elk uur draait.

Heb je campagnes met veel verschillende merken? Dan werkt dit script niet. Maar niet getreurd, ook daar hebben we een oplossing voor gebouwd, gebaseerd op de productfeed.

Script
// Copyright 2019. Increase BV. All Rights Reserved.
//
// Created by: Tibbe van Asten
// for Increase B.V.
//
// Created: 14-06-2018
// Last update: 08-04-2019
// 
// ABOUT THE SCRIPT
// With this script you can exclude non-branded queries 
// from branded shopping campaigns. By doing this 
// every day, the accountstructure will remain clean.
//
////////////////////////////////////////////////////////////////////

var config = {
  
  	LOG : true,

  	// Branded search query. Make sure to use quotes.
  	// If you only use 2 branded keywords, remove variable + row in var report
	BRANDED_KEYWORDS_1 : "",		
	BRANDED_KEYWORDS_2 : "",
	BRANDED_KEYWORDS_3 : "",
  
  	// The mark for every branded campaign in the account
	B_SELECTOR : "[B]"					
 
}

////////////////////////////////////////////////////////////////////

function main() {
  
    var report = AdsApp.report(
      'SELECT CampaignName, AdGroupId, AdGroupName, Query ' +
      'FROM SEARCH_QUERY_PERFORMANCE_REPORT ' +
      'WHERE CampaignStatus = ENABLED AND AdGroupStatus = ENABLED ' +
      'AND CampaignName CONTAINS_IGNORE_CASE "' + config.B_SELECTOR + '" ' +
      'AND Query DOES_NOT_CONTAIN_IGNORE_CASE ' + config.BRANDED_KEYWORDS_1 +
      ' AND Query DOES_NOT_CONTAIN_IGNORE_CASE ' + config.BRANDED_KEYWORDS_2 +
      ' AND Query DOES_NOT_CONTAIN_IGNORE_CASE ' + config.BRANDED_KEYWORDS_3 +
      ' AND QueryTargetingStatus = NONE'
    );

    var rows = report.rows();
    while (rows.hasNext()) {
      var row = rows.next();
      	
      var query = trimQuery(row);

      var shoppingAdGroupIterator = AdsApp
        .shoppingAdGroups()
        .withCondition("Id = '"+row["AdGroupId"]+"'")
        .get();
      
      while (shoppingAdGroupIterator.hasNext()) {
        var shoppingAdGroup = shoppingAdGroupIterator.next();
        shoppingAdGroup.createNegativeKeyword(query);
        
        if(config.LOG === true){
          Logger.log(row["CampaignName"]);
          Logger.log(row["AdGroupName"]);
          Logger.log(query);
          Logger.log(" ");       
        }
      } // shoppingAdGroupIterator
      
      var adGroupIterator = AdsApp
        .adGroups()
        .withCondition("Id = '"+row["AdGroupId"]+"'")
        .get();
      
      while (adGroupIterator.hasNext()) {
        var adGroup = adGroupIterator.next();
        adGroup.createNegativeKeyword(query);

        if(config.LOG === true){	
          Logger.log(row["CampaignName"]);
          Logger.log(row["AdGroupName"]);
          Logger.log(query);
          Logger.log(" ");   
        }
      } // adGroupIterator
      
    } // rowIterator  
  
    Logger.log("Thanks for using this custom script by Tibbe van Asten. Winning!");
  
} // function main()

////////////////////////////////////////////////////////////////////

function trimQuery(row){

  // When the searchquery exceeds the limit of 10 words, we will split
  // the query and put max. 10 words back together as a phrasematch query
  var query = "";
  if (row["Query"].split(" ").length < 10) {
    query = "[" + row["Query"] + "]";
  } else {
    for (var i = 0; (i < row["Query"].split(" ").length) && (i < 10); i++){
      query += row["Query"].split(" ")[i] + " ";
    }
    query = '"' + query.replace(/\s+$/,'') + '"';
  }

  return query;

} // function trimQuery()

Kennis delen

Adsscripts.com staat voor het delen van kennis. In de huidige markt houden SEA-specialisten de kennis en ervaring graag voor zich. Wij zijn er van overtuigd dat het delen van kennis ervoor kan zorgen dat iedereen beter wordt in haar of zijn werk. Daarom lopen wij hier graag in voorop, door onze kennis over scripts te delen met iedereen.

Wil jij ook graag een bijdrage leveren? Wij staan open voor nieuwe ideeën en feedback op alles wat je op Adsscripts.com vindt.

Neem contact op

Nils Rooijmans
Google Ads Scripter
Water Cooler Topics
Nils Rooijmans, Google Ads Scripter
Bas Baudoin
Teamleider SEA
Happy Leads
Bas Baudoin, Teamleider SEA
Martijn Kraan
Freelance SEA Specialist
Brightstep
Martijn Kraan, Freelance PPC Specialist
Tibbe van Asten
SEA Specialist
Founder Adsscripts
Tibbe van Asten, Senior PPC Automation Specialist