Wouter srgb Wouter Schut
Head of SEA

Ads Scripts: uitsluiten non-branded

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. Binnenkort zullen we deze ook beschikbaar stellen op ons blog.

Exclude – Queries – Non-Branded in Brand

// Copyright 2018. Increase BV. All Rights Reserved.
//
// Created By: Tibbe van Asten
// for Increase B.V.
//
// Last update: 14-06-2018
//
// 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.
// -----------------------------------------------------

  // First branded search query. Make sure to use quotes.
  var BRANDED_KEYWORD_1 = "X"; 

  // Second branded search query. If you don't use this one, remove line 30.
  var BRANDED_KEYWORD_2 = "Y"; 

  // Third branded search query. If you don't use this one, remove line 31.
  var BRANDED_KEYWORD_3 = "Z";	

  // The mark for every branded campaign in the account
  var B_SELECTOR = "[B]";					

function main() {

    // First, we select all search queries in the branded campaigns
    // that do not contain any of the branded keywords

    var report = AdsApp.report(
      'SELECT CampaignName, AdGroupId, AdGroupName, Query ' +
      'FROM SEARCH_QUERY_PERFORMANCE_REPORT ' +
      'WHERE CampaignStatus = ENABLED AND AdGroupStatus = ENABLED ' +
      'AND CampaignName STARTS_WITH_IGNORE_CASE "' + B_SELECTOR + '" ' +
      'AND Query DOES_NOT_CONTAIN_IGNORE_CASE ' + BRANDED_KEYWORD_1 +
      ' AND Query DOES_NOT_CONTAIN_IGNORE_CASE ' + BRANDED_KEYWORD_2 +
      ' AND Query DOES_NOT_CONTAIN_IGNORE_CASE ' + BRANDED_KEYWORD_3 +
      ' AND QueryTargetingStatus = NONE '
    );

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

        // Search queries with over 10 words, can not be excluded in Google Ads.
        // So we check the queries and when over 10 words, we will make it a phrase match.
        
      	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+$/,'') + '"';
        }

      	var shoppingAdGroupIterator = AdsApp
          .shoppingAdGroups()
          .withCondition("Id = '"+row["AdGroupId"]+"'")
          .withCondition("Clicks > 0")
          .forDateRange("LAST_14_DAYS")
          .get();

      	while (shoppingAdGroupIterator.hasNext()) {
          var shoppingAdGroup = shoppingAdGroupIterator.next();

            Logger.log(row["CampaignName"]);
            Logger.log(row["AdGroupName"]);

	  shoppingAdGroup.createNegativeKeyword(query);

            Logger.log(query);
      	    Logger.log(" ");
        }
}