Script Google Ads per pulizia automatica dei termini di ricerca

Una delle attività che ritengo sempre utile in un account Google Ads è quella di analizzare i termini di ricerca e, soprattutto, di mettere in negativo quelle ricerche che non sono in target.

script query exclusion

Va precisato che, grazie al broad match e alla corrispondenza generica, questa attività viene svolta in modo abbastanza buono dall’algoritmo. Tuttavia, in alcuni account o per talune campagne l’algoritmo potrebbe essere sufficiente.

Se poi decidiamo di lavorare sulle campagne di brand protection con CPC manuale, perdiamo tale funzionalità e dobbiamo lavorare manualmente per escludere tutti quei termini che non sono del brand.

Il buon Floris de Schrijver, grande esperto e “spacciatore” di diversi script utilissimi (qui trovate la sua lista, https://library.flowboost.co/, sia gratuita che premium), ne ha rilasciato anche uno in grado di escludere tutto ciò che NON contiene una determinata parola/frase.

Lo script funziona bene, ma purtroppo ha il limite di una sola parola/frase. Così, ho deciso di armarmi di pazienza e di chiedere aiuto al mio amico ChatGPT. Dopo parecchi tentativi, ci sono riuscito.

Lo script è ideale per pulire le campagne di brand o quelle shopping che vogliamo far lavorare solo su specifiche chiavi di ricerca. Anche se per queste ultime preferisco usare le campagne con i diversi livelli di priorità.

Ma torniamo allo script. Basta inserire i seguenti dati:

  1. Le parole che devono contenere le query da NON escludere;
  2. Il minimo numero di impression che una query deve avere in una settimana per essere esclusa;
  3. Il numero minimo di clic che una query deve avere in una settimana per essere esclusa;
  4. Il nome della lista di keyword negative da escludere, che deve essere già creata, altrimenti lo script darà errore;
  5. Il nome della campagna su cui deve girare.

Alcune considerazioni aggiuntive:

Non impostare un numero di impression troppo basso. 5 in una settimana significa meno di un’impression al giorno. Secondo me, meno sarebbe troppo.

Le liste di keyword negative possono contenere fino a 5000 parole. In caso di campagne che girano con keyword generiche e che generano un alto numero di impression, la lista negativa raggiungerà velocemente le 5.000 parole e lo script non funzionerà più.

Può essere usato sia in campagne di rete di ricerca che su campagne shopping standard. Ovviamente, non funziona sulle PMax.

Buona esclusione!


/* 
	GIUSEPPE SCOLLO AUTOMATIC EXCLUSION OF QUERIES - Credit to Floris de Schrijver - https://library.flowboost.co/
	The script was originally created by Floris, but it worked with only a single query. I've updated it, and now it works with all the variants you want.
	The scripts exclude queries that match the conditions below in the last 7 days. Therefore, you can run them every week.

	Instructions for modification:

	Var exclusions = insert the queries you don't want to be excluded. Use commas to separate the individual queries and write each query in single quotes.
	Var impressions = insert the minimum number of impressions required for a query to be excluded.
	Var clicks = insert the minimum number of clicks required for a query to be excluded.
	Var listName = insert the name of the negative keyword list you have already created.
	Var campaignName = insert the name of the campaign that the script should work with.
  */  
  
var exclusions = ['query1', 'word1 word2', 'the query 3', 'another query' ];
var impressions = 5; // threshold on impressions
var clicks = 0; // threshold on clicks
var listName = "NO BRAND"; // name negative keyword list
var campaignName = "Campaign Brand Protection"; // name of the campaign

function main() {
  var searchQueryReport = AdWordsApp.report(
    'SELECT Query, Clicks, Impressions, Cost ' +
    'FROM SEARCH_QUERY_PERFORMANCE_REPORT ' +
    'WHERE CampaignName = "' + campaignName + '" AND Clicks >= ' + clicks + ' AND Impressions >= ' + impressions +
    ' DURING LAST_7_DAYS');

  var negativeKeywordList = AdWordsApp.negativeKeywordLists().withCondition('Name = "' + listName + '"').get().next();

  var rows = searchQueryReport.rows();
  while (rows.hasNext()) {
    var row = rows.next();
    var query = row.Query;
    if (!shouldExcludeQuery(query, exclusions)) {
      negativeKeywordList.addNegativeKeyword("[" + query + "]");
    }
  }
}

function shouldExcludeQuery(query, exclusions) {
  for (var i = 0; i < exclusions.length; i++) {
    if (query.indexOf(exclusions[i]) !== -1) {
      return true;
    }
  }
  return false;
}

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *