PMax Zoektermen

Exporteer de zoektermen uit je PMax campagnes naar een spreadsheet

Start nu!
Zoektermen van PMax campagnes inzichtelijk maken
PMax Zoektermen Get started!

Eindelijk, het is nu mogelijk om zoekterm data uit je PMax campagnes te exporteren. Hiermee heb je snel duidelijk op welke zoektermen jouw campagne vertoond wordt. Helaas (nog) geen kostendata, maar je weet hiermee wel of je relevante vertoningen binnenhaalt of niet. 

Hoe werkt dit script

Dit script selecteert alle PMax campagnes in jouw account en exporteert de data naar een Google Spreadsheet. Per campagne wordt een apart tabblad aangemaakt. Zonder aanpassingen zal het script de laatste 30 dagen aan data exporteren, maar dit kan je naar wens aanpassen.

Instellingen

Configureer het script door de volgende parameters aan te passen in de CONFIG:

  • LOG: wil je meer informatie in de debug van het script zien, zet deze dan op 'true'
  • DATE_RANGE: Pas het alleen het cijfer aan naar het aantal dagen dat het script terug moet kijken om data te verzamelen
  • SPREADSHEET_URL: Maak een nieuwe spreadsheet aan, kopieer en plak de URL hier

Frequentie: helemaal naar eigen inzicht. Maximaal 1x per dag.

The script
// Copyright 2023
// Free to use or alter for everyone. A mention would be nice ;-)
//
// Idea By: Mike Rhodes
// Put on steroids by: Tibbe van Asten
// 
// Created: 15-08-2023
// Last update: 18-08-2023: fixed a little mistake in the query, that prevents you from collecting more than 30 days data
//
// ABOUT THE SCRIPT
// Export search term from Pmax campaigns to a spreadsheet.
//
////////////////////////////////////////////////////////////////////

var config = {

    LOG : false,

    // Change the number of days of which data must be exported. Only change the number!
    DATE_RANGE: last_n_days(30),
    
    // Edit the URL of an empty Google Sheet in here, with '/edit' at the end
    SPREADSHEET_URL : ""
  
  }  
    
  ////////////////////////////////////////////////////////////////////
  
  function main() {
    
      var spreadsheet = SpreadsheetApp.openByUrl(config.SPREADSHEET_URL);
    
    let campaignIterator = AdsApp
      .performanceMaxCampaigns()
      .withCondition("campaign.status = ENABLED")
      .get();
    
    while(campaignIterator.hasNext()){
      let campaign = campaignIterator.next();
      
      let query = AdsApp.report(
        "SELECT campaign_search_term_insight.category_label, metrics.clicks, metrics.impressions, metrics.conversions, metrics.conversions_value " +
        "FROM campaign_search_term_insight " +
        "WHERE campaign_search_term_insight.campaign_id = '" + campaign.getId() + "' " +
        "AND segments.date BETWEEN '" + config.DATE_RANGE.split(',')[0] + "' AND '" + config.DATE_RANGE.split(',')[1] + "' " +
        "ORDER BY metrics.impressions DESC"
      );
      
        if(config.LOG === true){
           Logger.log("Report " + campaign.getName() + " contains " + query.rows().totalNumEntities() + " rows.");
        }
      
      let sheet = checkTab(spreadsheet, campaign.getName());
      query.exportToSheet(sheet);
    } // campaignIterator    
    
  }
    
  ////////////////////////////////////////////////////////////////////
  
  function checkTab(file, tabName){
    
    if(SpreadsheetApp.openById(file.getId()).getSheetByName(tabName)){
      var tab = SpreadsheetApp.openById(file.getId()).getSheetByName(tabName);
      
      if(config.LOG === true){
       Logger.log("Selected tab " + tabName);      
      }
    } else {
      var tab = SpreadsheetApp.openById(file.getId()).insertSheet(tabName);
      
        if(config.LOG === true){
         Logger.log("Created tab " + tabName);      
        }
    }
    
    // Remove default tab in Dutch
    if(SpreadsheetApp.openById(file.getId()).getSheetByName("Blad1")){
      var defaultSheet = SpreadsheetApp.openById(file.getId()).getSheetByName("Blad1")
      SpreadsheetApp.openById(file.getId()).deleteSheet(defaultSheet);
    }
    
    // Remove default tab in English
    if(SpreadsheetApp.openById(file.getId()).getSheetByName("Sheet1")){
      var defaultSheet = SpreadsheetApp.openById(file.getId()).getSheetByName("Sheet1")
      SpreadsheetApp.openById(file.getId()).deleteSheet(defaultSheet);
    }
    
    return tab;
    
  } // function checkTab
  
  ////////////////////////////////////////////////////////////////////
  
  function last_n_days(n) {
  
      var	from = new Date(), to = new Date();
      to.setUTCDate(from.getUTCDate() - n);
    from.setUTCDate(from.getUTCDate() - 1);
  
      return google_date_range(from, to);
  
  } // function last_n_days()
  
  ////////////////////////////////////////////////////////////////////
  
  function google_date_range(from, to) {
  
      function google_format(date) {
          var date_array = [date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate()];
          if (date_array[1] < 10) date_array[1] = '0' + date_array[1];
          if (date_array[2] < 10) date_array[2] = '0' + date_array[2];
  
          return date_array.join('');
      }
  
      var inverse = (from > to);
      from = google_format(from);
      to = google_format(to);
      var result = [from, to];
  
      if (inverse) {
          result = [to, from];
      }
  
      return result.join(',');
  
  } // function google_date_range()
Show whole script!
Loading Comments
The Experts
Tibbe van Asten Team Lead Performance Marketing
Nils Rooijmans Water Cooler Topics
Martijn Kraan Freelance PPC Specialist
Bas Baudoin Teamlead SEA @ Happy Leads
Jermaya Leijen Digital Marketing Strategist
Krzysztof Bycina PPC Specialist from Poland
How about you? JOIN US!
Sharing Knowledge
Caring

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

Training &
Workshop
Neem contact op!
Adsscripts Training & Workshop