Obecnie 182 forumowiczów jest online
Obecnie 182 forumowiczów jest online
Dla pytań związanych z funkcjami remarketingu, strategii stawek, Edytor AdWords i skryptów AdWords.
Poprowadź mnie
star_border
Odpowiedz

[Nowy skrypt] Sprawdza czy grupy reklam prowadzą do jednego URL

[ Edytowane ]
Profesjonalista ✭ ✭

Cześć,

 

Przyszedł mi do głowy pomysł na skrypt :-)

 

Jest u mnie regułą, że każda grupa reklam powinna prowadzić tylko do jednego adresu docelowego.

Nie wiem czy też tak macie?

 

Zauważyłem, że można się czasami w tym zakresie pomylić.

Szczególnie podczas dodawania nowych elementów do kampanii (i robienia kilku rzeczy na raz) oraz używania funkcji znajdź i zastąp w edytorze.

 

Zastanawiałem się nad sposobem, który pozwoli mi sprawdzić czy mam takie błędy na kontach.

 

Wydaje mi się, że ten skrypt całkiem dobrze daje sobie z tym radę.

 

Co robi?

Sprawdza czy masz grupy reklam, w których słowa kluczowe* lub reklamy prowadzą do różnych stron docelowych.

 

*Osobiście zawsze dodaje końcowy URL do słowa kluczowego. 

 

Na jakie dane patrzy?

Zaczyna od wybrania grup reklam, które miały przynajmniej jedno kliknięcie w przeciągu 30 dni.

Sprawdzając słowa kluczowe wybiera te, które miały przynajmniej jedno wyświetlenie w przeciągu 30 dni.

 

Musiałem zastosować powyższe ograniczenia ponieważ skrypty mogą być uruchomione maksymalnie przez 30 minut.

Próby sprawdzenia wszystkich danych dostępnych (nawet na średnich kontach) kończą się przekroczeniem limitu czasowego.

  

Jak często uruchamiać?

Raz na jakiś czas. Miesiąc lub dłużej. 

 

Można tez stosować na kontach nowych klientów np. przed pierwszą rozmową.

Następnie delikatnie wspomnieć o tym, że są pewne elementy, które będziecie ulepszać po poprzednikach.

Oczywiście nie sugeruję wytykania błędów.

 

 

Konfiguracja:

Wstaw email, na który chcesz otrzymywać powiadomienia 

 

Opcjonalnie:

Na dużych kontach ustaw checkKewordURL = false; i uruchom skrypt.

Później zmień ustaw checkAdURL = false checkKewordURL = true;

 

 

W ten sposób najpierw sprawdzisz tylko adresy reklam, a później słów kluczowych.

To na wypadek gdyby 30 minut nie wystarczyło na oba procesy.

Na średnim koncie całość powinna się zmieścić w 30 minutach.

 

Jeśli pojawią się jakieś pytania lub problemy to chętnie pomogę.

 

Pozdrawiam,

Krzysiek

 

//Konfiguracja wymagana:
var emails = ['TUTAJ WSTAW EMAIL'];

//Konfiguracja opcjonalna:
var checkAdURL = true; // sprawdzac URL reklam?
var checkKewordURL = true; // sprawdzac URL słów kluczowych?
//Koniec konfiguracji

var badAds = [];
var badKeywords = [];


function main() {
isEmailOk(emails);
  
  if (isSearchActive()) {
    if (checkAdURL){
      Logger.log("Rozpoczęto sprawdzanie reklam...");
      checkAds();
    }
    if (checkKewordURL) {
      Logger.log("Rozpoczęto sprawdzanie słow kluczowych...");
      checkKeywords();
    }
  } else {
       Logger.log("Nie masz aktywnych kampanii.")
  }
sendEmails();           
}

function checkAds(){
     var errCount = 0;
     var adGroups = AdWordsApp.adGroups()
   .forDateRange("LAST_30_DAYS")
   .withCondition("Clicks > 1")
   .get()
  while(adGroups.hasNext()){
    var adGroup = adGroups.next();
    errCount = 0;
    var ads = adGroup.ads()
    .forDateRange("LAST_30_DAYS")
    .withCondition('Status = ENABLED')
    .withCondition("Impressions > 0")
    .get();
    while(ads.hasNext()){
      var ad = ads.next();
      var otherAds = adGroup.ads()
      .forDateRange("LAST_30_DAYS")
      .withCondition('CreativeFinalUrls != "' + ad.urls().getFinalUrl() + '"')
      .withCondition('Status = ENABLED')
      .withCondition("Impressions > 0")
      .get();
      if(otherAds.totalNumEntities() > 0){
        errCount++
          if (errCount === 1){
        badAds.push(adGroup.getCampaign().getName() + "\\" + adGroup.getName() + ' ma reklamy z różnymi stronami docelowymi');
        Logger.log(adGroup.getCampaign().getName() + "\\" + adGroup.getName() + ' ma reklamy z różnymi stronami docelowymi');
          }
      }
    }
  }
}

function checkKeywords(){
     var errCount = 0;
     var adGroups = AdWordsApp.adGroups()
   .forDateRange("LAST_30_DAYS")
   .withCondition("Clicks > 1")
   .get()
  while(adGroups.hasNext()){
    var adGroup = adGroups.next();
    errCount = 0;
    var keywords = adGroup.keywords()
    .forDateRange("LAST_30_DAYS")
    .withCondition('Status = ENABLED')
    .withCondition("Impressions > 0")
    .get();
    while(keywords.hasNext()){
      var keyword = keywords.next();
      var otherKeywords = adGroup.keywords()
      .forDateRange("LAST_30_DAYS")
      .withCondition('FinalUrls != "' + keyword.urls().getFinalUrl() + '"')
      .withCondition('Status = ENABLED')
      .withCondition("Impressions > 0")
      .get();
      if(otherKeywords.totalNumEntities() > 0){
        errCount++
          if (errCount === 1){
        badKeywords.push(adGroup.getCampaign().getName() + "\\" + adGroup.getName() + ' ma słowa kluczowe z różnymi stronami docelowymi');
       Logger.log(adGroup.getCampaign().getName() + "\\" + adGroup.getName() + ' ma słowa kluczowe z różnymi stronami docelowymi');
          }
         }
    }
  }
}

function isSearchActive(){
  var searchCampaigns = AdWordsApp
  .campaigns()
  .withCondition("Clicks > 0")
  .forDateRange('LAST_14_DAYS')
  .get(); 
  if (searchCampaigns.totalNumEntities() > 0) {
    var theResult = true;
  } else {
    var theResult = false;
  }
  Logger.log(searchCampaigns.totalNumEntities() + " aktywnych kampanii tekstowych");
  return theResult;
}

function sendEmails(){
if (badKeywords[0] && badAds[0]) {
  MailApp.sendEmail(emails.join(','), 
                    'Masz grupy reklam z różnymi stronami docelowymi',
                      'Cześć, \n\nPoniższe grupy reklam zawierają słowa kluczwe z różnymi stronamai docelowymi: \n\n' + badKeywords.join("\n") +
                      '\n\nPoniższe grupy reklam zawierają reklamy z różnymi stronami docelowymi: \n\n' + badAds.join("\n"));
  return;
} else if (badAds[0]) {
   MailApp.sendEmail(emails.join(','), 
                     'Masz grupy reklam z różnymi stronami docelowymi',
                      'Cześć, \n\nPoniższe grupy reklam zawierają reklamy z różnymi stronamai docelowymi: \n\n' + badAds.join("\n"));
} else if (badKeywords[0]) {
   MailApp.sendEmail(emails.join(','), 
                 'Masz grupy reklam z różnymi stronami docelowymi',
                      'Cześć, \n\nPoniższe grupy reklam zawierają słowa kluczwe z różnymi stronamai docelowymi: \n\n' + badKeywords.join("\n"));
}
  }

function isEmailOk(email) {
  if (email && email[0] == 'TUTAJ WSTAW EMAIL') {
    throw new Error('Aby uruchomic skrypt podaj swoj adres email');
  }
 

 

Czy moja odpowiedź była pomocna? Jeśli tak, oznacz ją jako „najlepszą odpowiedź”