Come abilitare/disabilitare gli annunci su AdWords in automatico


Questo script ci viene incontro per automatizzare l'abilitazione e la disabilitazione di un annuncio di una campagna AdWords controllando la disponibilità del prodotto tramite i dati strutturati.

Come funziona lo script

Lo script AdWords va inserito in "Operazioni collettive" > "Script" e funziona ciclando tutte le campagne attive e per ognuna di esse cicla le url degli annunci per trovare quelle che portano ad una scheda prodotto.

Per definire quali sono schede prodotto va inserita l'etichetta "Prodotto" all'annuncio specifico.

Per ognuna di queste url viene recuperato il codice html e cercato il dato strutturato "InStock" o "OutOfStock". Vengono quindi attivati o disattivati gli annunci nel caso in cui il prodotto sia disponibile o non disponibile.

Ogni modifica viene tracciata e alla fine della procedura viene mandata un'email di riepilogo a "YOUREMAIL@DOMAIN.IT".

Lo script può lavorare anche su più customer inserendo gli ID separati da virgola nella variabile "customerIds".

Scopriamo il semplice script AdWords

var TESTO_EMAIL = '';
var customerIds = [
'ID_CUSTOMER',
'ID_CUSTOMER'
]


function main() {
  var accountSelector = MccApp.accounts().withIds(customerIds).get();
  while (accountSelector.hasNext()) {
	var account = accountSelector.next();
	Logger.log(account.getName());
	
	MccApp.select(account);
	
	/*
	var campaignIterator = AdWordsApp.campaigns().get();
	Logger.log('Total campaigns found : ' + campaignIterator.totalNumEntities());

	while (campaignIterator.hasNext()) {
	  var campaign = campaignIterator.next();
	  Logger.log(campaign.getName());
	}
	*/
	
	getAllAdGroups();
	Logger.log('ok');
	if(TESTO_EMAIL != ''){
	  sendEmail(TESTO_EMAIL);
	}
	
  }
}

function getAllAdGroups() {
  // AdWordsApp.adGroups() will return all ad groups that are not removed by
  // default.
  var adGroupIterator = AdWordsApp.adGroups().get();
  Logger.log('Total adGroups found : ' + adGroupIterator.totalNumEntities());
  while (adGroupIterator.hasNext()) {
	var adGroup = adGroupIterator.next();
	
	if(adGroup.isEnabled()){
	  if(adGroup.getName() == 'Massimo mosconi'){ //temp
		Logger.log(adGroup.getName() + ' ' + adGroup.isEnabled());
		getAllAd(adGroup);
	  }
	}

	
  }
}

function getAllAd(adGroup) {
  var adsIterator = adGroup.ads().get();
  while (adsIterator.hasNext()) {
	var ad = adsIterator.next();
	Logger.log(' ad : ' + ad.urls().getFinalUrl() + ' ' + ad.isEnabled());
	getAllLabel(ad);
	
	var url = ad.urls().getFinalUrl();
	
	if(url == 'https://www.olivyou.com/it/olio-extravergine-di-oliva-risveglio-massimo-mosconi.html'){ //temp, fare il check sulla label
	  //check if http:\/\/schema.org\/InStock
	  var response = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
	  var code = response.getContentText();
	  
	  //Logger.log(code);
	  if(code.indexOf(':\\/\\/schema.org\\/InStock')){
		//abilita l'annuncio se è disabilitato
		if(!ad.isEnabled()){
		  Logger.log('Abilita annuncio');
		  //ad.enable();
		  TESTO_EMAIL = TESTO_EMAIL + '<li>Campagna <b>' + adGroup.getCampaign().getName() + '</b>, Gruppo <b>' + adGroup.getName() + '</b> (<small>' + url + '</small>). L\'annuncio è stato RIABILITATO, il prodotto è tornato disponibile</li>'
		}
	  }else{
		if(ad.isEnabled()){
		  Logger.log('Disabilita annuncio');
		  //ad.pause();
		  TESTO_EMAIL = TESTO_EMAIL + '<li>Campagna <b>' + adGroup.getCampaign().getName() + '</b>, Gruppo <b>' + adGroup.getName() + '</b> (<small>' + url + '</small>). L\'annuncio è stato disabilitato <span style="color:#ff0000;">DISABILITATO</span>, il prodotto non è più disponibile</li>'
		}
	  }
	}
	
  }
}

function getAllLabel(ad) {
  var labelsIterator = ad.labels().get();
  while (labelsIterator.hasNext()) {
	var label = labelsIterator.next();
	Logger.log('  label : ' + label.getName());
  }
}
function sendEmail(testo) {
  MailApp.sendEmail({
	to: 'YOUREMAIL@DOMAIN.IT',
	subject: 'Script automatico AdWords',
	htmlBody: testo
  });
}