Het Google Display Netwerk staat doorgaans niet bekend om zijn kwalitatieve plaatsingen. Regelmatig vind je irrelevante en buitenlandse websites tussen je Display plaatsingen waar je niet op wil targeten. Dit script geeft je meer grip op de kwaliteit van de plaatsingen door plaatsingen zo snel mogelijk uit te sluiten op basis van je criteria. Dit wordt op twee manieren gedaan:

  1. Alle plaatsingen uitsluiten die woorden bevatten die je aan het script hebt toegevoegd. Als je bijvoorbeeld niet wil targeten op websites die viral bevatten kan je deze aan de array exWords toevoegen en zal worden uitgesloten elke keer als het script draait.
  2. Behoudt alleen plaatsingen die bepaalde woord-delen bevatten. Als je bijvoorbeeld alleen plaatsingen wil die .nl bevatten, voeg je deze toe aan placementSelector op dezelfde manier als de huidige woorden. Alle niet .nl domeinen zullen elke keer als het script draait worden uitgesloten.

Let op: dit script is mogelijk niet efficiënt voor grote Display campagnes.

Script
/***
  * Adgroup level auto keyword excluder *
  
  Script by Bas Baudoin for happyleads.nl
  
  About the script: the script has 2 functions, it includes ONLY placements
    containing certain string(s) and it excludes placements that contain
    other string(s).
  Instructions:
  You can modify 3 things in this script:
  1. Date range         (line 20)
  2. Strings to exclude (line 23)
  3. Strings to include (line 46)
  Schedulde hourly
  
***/

// (Modify 1.) Use official adwords scripts date range formatting
var dateRange = 'LAST_30_DAYS'

// (Modify 2.) Exclude placements containing:
var exWords = ['wordfeud',
               'haber',
               'game',
               'viral']

// Main function, do not change
function main() {
  includeOnly()
 
  // (this is inefficient)
  for (var i in exWords) {
    excludeContaining(exWords[i])
  }
}

// Include only function
function includeOnly() {
  var placementSelector = AdsApp.display()
     .placements()
     .withCondition("Impressions > 1")
    
  // (Modify 3.) exclude placements that do not contain
  // use same formatting as below
     .withCondition("PlacementUrl DOES_NOT_CONTAIN '.nl'")
     .withCondition("PlacementUrl DOES_NOT_CONTAIN '.com'")
     .withCondition("PlacementUrl DOES_NOT_CONTAIN '.net'")
     .withCondition("PlacementUrl DOES_NOT_CONTAIN '.org'")
     .withCondition("PlacementUrl DOES_NOT_CONTAIN '.nu'")
     .withCondition("PlacementUrl DOES_NOT_CONTAIN '.be'")
     .withCondition("PlacementUrl DOES_NOT_CONTAIN '.de'")
     .withCondition("PlacementUrl DOES_NOT_CONTAIN '.google'")
     .withCondition("PlacementUrl DOES_NOT_CONTAIN '.info'")
     .withCondition("PlacementUrl DOES_NOT_CONTAIN '.tv'")
  
     .forDateRange(dateRange)
     .orderBy("Clicks DESC")

 // Add negative placement
  var placementIterator = placementSelector.get()
  while (placementIterator.hasNext()) {
    var placement = placementIterator.next()
    var adgroup = placement.getAdGroup()
    var placeUrl = placement.getUrl()
      var placementBuilder = adgroup.display().newPlacementBuilder()
     .withUrl(placeUrl)
     .exclude()
   Logger.log('Excluded placement: ' + placeUrl)
  }
}

// Exclude function, runs for each exWord
function excludeContaining(dotext) {

  // Select placements
  var placementSelector = AdsApp.display()
  .placements()
  .withCondition("Impressions > 1")
  .withCondition("PlacementUrl CONTAINS '" + dotext + "'")
  .forDateRange(dateRange)
  .orderBy("Clicks DESC")
  
  // Add negative placement
  var placementIterator = placementSelector.get()
  while (placementIterator.hasNext()) {
    var placement = placementIterator.next()
    var adgroup = placement.getAdGroup()
    var placeUrl = placement.getUrl()
    var placementBuilder = adgroup.display().newPlacementBuilder()
    .withUrl(placeUrl)
    .exclude()
    Logger.log('Excluded placement: ' + placeUrl)
  }
}

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