AdWords to teraz Google Ads. Nowa nazwa oddaje pełny zakres usług reklamowych, jakie oferujemy m.in. w wyszukiwarce, sieci reklamowej i YouTube.. Więcej informacji

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

Skrypt szukający słów kluczowych, które słabiej konwertują

Wszechwiedzący ✭

Cześć,

 

Zgodnie z sugestią @Adam Grabowski wstawiam nowy skrypt bez uprzedniego pytania czy ktoś chce :-)

 

Przede wszystki jest on bardzo prosty w obsłudze - sugeruję tylko wstawić email, a resztę zostawić tak jak jest.

 

Do czego to służy:

Skrypt szuka zmian w ilość konwersji dla słów kluczowych i produktów i wysyła email gdy coś słabiej konwertuje.

W tym celu porównywane są dwa zakresy czasowe:

1) Minione 7 dni 

2) Poprzedni okres do tych 7 dni

Tak samo gdybyśmy zaznaczyli w AdWords minione 7 dni i porównaj do: poprzedni okres

 

W pierwszej kolejności skrypt patrz na zakres nr 2 (poprzedni okres) i szuka słów kluczowych i produktów, które miały minimum 3 konwersje w tym czasie.

Dalej patrzy na zakres nr 1 czyli minione 7 dni i sprawda czy te same słowa kluczwe, które miały poprzednio konwersje zaczęły słabiej konwertować o 30%.

 

Do czego się przydaje:

Najlepiej sprawdzi się na średnich i dużych kontach gdzię tygodniowo mamy średnio kilkaset konwersji lub więcej.

Możemy czasem nie wychwycić, że coś zaczęło słabiej działać, bo średnią ilośc konwersji mamy dobrą.

Ja ustawiłem sobie w harmonogriamie raz w tygodnio na poniedziałek rano.

Idealnie się sprawdza aby przeanalizować co w poprzednim tygodniu zaczęło działać słabiej.

 

 

Dodatkowo może się to też przydać do rozmów z klientami.

 

Jeden z klientów chce abym jemu również podsyłal taki email - mniej konwersji w tym wypadku zwykle zależy od ofery.
Dzięki temu klient sprawdza czy konkurancja nie wprowadziłach np. promocji na pewnych produktach i stąd gorsze wyniki u niego.

Zdaje się, że mu się to podoba.

Byłbym wdzięczny za opinie lub sugestie dotyczące skryptu.

 

Z góry dzięki.

 

//Skrypt szuka zmian w ilość konwersji dla słów kluczowych i produktów 
//Skrypt porównuje dwa zakresy czasowe: minione 7 dni (czy było mniej konwersji) w stosunku do poprzednich 7 dni (nazwijmy ten okres tygodniem wstecznym)
//Zalecam uruchamiać skrypt raz w tygodniu. Najlepiej w poniedziałek rano
//Autor: Krzysztof Bycina AD

function main() { //Konfiguracja: var emails = ["TUTAJ WSTAW EMAIL"] //Konfiguracja opcjonalna: var perValue = 0.7 // Jakiej zmiany w % konwersji ma szukać skrypt. 0.7 to 30%, 0.6 to 40%, 0.3 to 70% itp. var kwMinConv = 3 // Minimalna ilość konwersji dla słów kluczowych i produktów w tygodniu wstecznym //przy obecnej konfiguracji skrypt będzie szukał słów kluczowych i produktów, które miały przynajmniej 3 konwersje (w tygodniu wstecznym) //w dalszej części skrypt porówna czy w minionych 7 dniach te same słowa kluczowe i produkty przyniosły mniej konwersi o 30% //jeśli miałeś słowo kluczowe w tygodniu wstecznym, które przyniosło 20 konwersji, a w minionych 7 dniach przyniosło tylko 13 (zmiana większa niż 30%) //to skrypt wyśle ci maila z nazwą tego słowa kluczowego i produktu. //Koniec konfiguracji var current = new Date(); var startDate = new Date(); var endDate = new Date(); var fetchDate = new Date(); var todaysDate = new Date(); var badKeywords = []; var badItems = []; startDate.setDate(startDate.getDate() - 14); endDate.setDate(endDate.getDate() - 7); fetchDate.setDate(fetchDate.getDate() - 14); todaysDate.setDate(todaysDate.getDate()); var keywords = AdWordsApp .keywords() .withCondition("Status = 'ENABLED'") .withCondition("Clicks > 1") .forDateRange(formatDate(fetchDate), formatDate(todaysDate)) .get(); var productGroups = AdWordsApp .productGroups() .withCondition("Clicks > 1") .forDateRange(formatDate(fetchDate), formatDate(todaysDate)) .get(); while (productGroups.hasNext()) { var productGroup = productGroups.next(); var productItemId = productGroup.asItemId(); var itemId = productItemId.getValue(); var itemStatsFor7Days = productItemId.getStatsFor('LAST_7_DAYS'); var itemStatsFor14Days = productItemId.getStatsFor(formatDate(startDate), formatDate(endDate)); var itemConversions7 = itemStatsFor7Days.getConversions(); var itemConversions14 = itemStatsFor14Days.getConversions(); var itemAvCpc7 = itemStatsFor7Days.getAverageCpc(); var itemAvCpc14 = itemStatsFor14Days.getAverageCpc(); var itemConversionDifference = itemConversions14 - itemConversions7; itemConversionDifference = itemConversionDifference.toFixed(2); if (itemConversions7 < (perValue * itemConversions14) && itemConversions14 > kwMinConv) { if (itemId) { badItems.push(itemId + " miał o " + itemConversionDifference + " mniej konwersji"); } } } while(keywords.hasNext()) { var keyword = keywords.next(); var kwStatsFor7Days = keyword.getStatsFor('LAST_7_DAYS'); var kwStatsFor14Days = keyword.getStatsFor(formatDate(startDate), formatDate(endDate)); var keywordText = keyword.getText(); var kwConversionFor7Days = kwStatsFor7Days.getConversions(); var kwConversionFor14Days = kwStatsFor14Days.getConversions(); var kwConversionDifference = kwConversionFor14Days - kwConversionFor7Days var kwAvCpc7 = kwStatsFor7Days.getAverageCpc(); var kwAvCpc14 = kwStatsFor14Days.getAverageCpc(); kwConversionDifference = kwConversionDifference.toFixed(2); if (kwConversionFor7Days < (perValue * kwConversionFor14Days) && kwConversionFor14Days > kwMinConv) { badKeywords.push(keywordText + " miał o " + kwConversionDifference + " mniej konwersji"); } } Logger.log(badItems); Logger.log(badKeywords); MailApp.sendEmail(emails.join(','), 'Masz słowa kluczowe, które słabiej konwertują.', 'Cześć, \n\nW poprzednich 7 dniach te słowa kluczowe miały mniej konwersji: \n\n' + badKeywords + '\n\nOraz te producty: \n\n' + badItems); } function formatDate(dt) { var day = dt.getDate(); day = (day > 9) ? day : "0" + day; var month = dt.getMonth() + 1; month = (month > 9) ? month : "0" + month; var year = dt.getFullYear(); return "" + year + month + day; }
Czy moja odpowiedź była pomocna? Jeśli tak, oznacz ją jako „najlepszą odpowiedź”

Skrypt szukający słów kluczowych, które słabiej konwertują

[ Edytowane ]
Profesjonalista ✭ ✭

Czy próbowałeś dorzucić do skryptu, żeby w wiadomości mailowej wraz ze słowem kluczowym była wysyłana nazwa kampanii i grupy?

 

I dzięki za skrypt Emotikon: Bardzo szczęśliwy

Kanał YT- Google Tag Manager: https://goo.gl/S2RM7X

Skrypt szukający słów kluczowych, które słabiej konwertują

Wszechwiedzący ✭

Hej @Bartek K,

 

Da się zrobić. Podrzucę update za kilka dni.

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

Dot.: Skrypt szukający słów kluczowych, które słabiej konwertują

Wszechwiedzący ✭

Hej @Bartek K,

 

Podrzucam nową wersję skryptu.

Dodałem nazwę kampanii + grupy reklamy + zmieniłem sposób prezentacji wyników.

Teraz powinno być znacznie czytelniej.

 

Jak masz jakieś propozycje odnośnie funkcjonalności lub jakiegoś innego skryptu, który mógłby pomóc w zrządzaniu kontem to pisz.

Póki mam jeszcze moce przerobowe! ;-)

 

function main() {

   //Konfiguracja:
  var emails = ["TUTAJ WSTAW EMAIL"]
  //Konfiguracja opcjonalna:
  var perValue = 0.7
  var kwMinConv = 3
  //Koniec konfiguracji 
  
  var current = new Date();
  var startDate = new Date();
  var endDate = new Date();
  var fetchDate = new Date();
  var todaysDate = new Date();
  var badKeywords = [];
  var badItems = [];

  startDate.setDate(startDate.getDate() - 14);
  endDate.setDate(endDate.getDate() - 7);
  fetchDate.setDate(fetchDate.getDate() - 14);
  todaysDate.setDate(todaysDate.getDate());
    
  var keywords = AdWordsApp
  .keywords()
  .withCondition("Status = 'ENABLED'")
  .withCondition("Clicks > 1")
  .forDateRange(formatDate(fetchDate), formatDate(todaysDate))
  .get();

   var productGroups = AdWordsApp
  .productGroups()
  .withCondition("Clicks > 1")
  .forDateRange(formatDate(fetchDate), formatDate(todaysDate))
  .get(); 
    
  while (productGroups.hasNext()) {    
    var productGroup = productGroups.next();
    var productItemId = productGroup.asItemId();
	var itemId = productItemId.getValue();
    var itemCampaignName = productGroup.getCampaign();
    var itemAdgroupName = productGroup.getAdGroup();
    var itemStatsFor7Days = productItemId.getStatsFor('LAST_7_DAYS');
	var itemStatsFor14Days = productItemId.getStatsFor(formatDate(startDate), formatDate(endDate));
    var itemConversions7 = itemStatsFor7Days.getConversions();
	var itemConversions14 = itemStatsFor14Days.getConversions();
	var itemAvCpc7 = itemStatsFor7Days.getAverageCpc(); 
	var itemAvCpc14 = itemStatsFor14Days.getAverageCpc();
	var itemConversionDifference = itemConversions14 - itemConversions7;
	itemConversionDifference = itemConversionDifference.toFixed(2);
    if (itemConversions7 < (perValue * itemConversions14) && itemConversions14 > kwMinConv) {
          if (itemId) { 
	 badItems.push(itemCampaignName.getName() + "\\" + itemAdgroupName.getName() + "\\" + itemId + " miał o " + itemConversionDifference + " mniej konwersji");
          } 
  }
  }
  while(keywords.hasNext()) {
  var keyword = keywords.next();
    var kwStatsFor7Days = keyword.getStatsFor('LAST_7_DAYS'); 
    var kwStatsFor14Days = keyword.getStatsFor(formatDate(startDate), formatDate(endDate)); 
    var kwCampaignName = keyword.getCampaign();
    var kwAdgroupName = keyword.getAdGroup();
    var keywordText = keyword.getText();
    var kwConversionFor7Days = kwStatsFor7Days.getConversions();
    var kwConversionFor14Days = kwStatsFor14Days.getConversions();
    var kwConversionDifference = kwConversionFor14Days - kwConversionFor7Days 
    var kwAvCpc7 = kwStatsFor7Days.getAverageCpc();
	var kwAvCpc14 = kwStatsFor14Days.getAverageCpc();
	kwConversionDifference = kwConversionDifference.toFixed(2); 
  
    
	    if (kwConversionFor7Days < (perValue * kwConversionFor14Days) && kwConversionFor14Days > kwMinConv) {
          badKeywords.push(kwCampaignName.getName() + "\\" + kwAdgroupName.getName() + "\\" + keywordText + " miał o " + kwConversionDifference + " mniej konwersji"); 
        }
         
}
   
    Logger.log(badItems);
    Logger.log(badKeywords);

  MailApp.sendEmail(emails.join(','), 
                    'Masz słowa kluczowe, które słabiej konwertują.', 
                      'Cześć, \n\nW poprzednich 7 dniach te słowa kluczowe słabiej konwertowały: \n\n' + badKeywords.join("\n") +
                      '\n\nOraz te produkty: \n\n' + badItems.join("\n"));
  
}

function formatDate(dt) { 
    var day = dt.getDate();
    day = (day > 9) ? day : "0" + day;
    var month = dt.getMonth() + 1;
    month = (month > 9) ? month : "0" + month;
    var year = dt.getFullYear();
    return "" + year + month + day;
}

 

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

Skrypt szukający słów kluczowych, które słabiej konwertują

Profesjonalista ✭ ✭

Super!

Teraz jest zdecydowanie bardziej czytelne. Jak wyjdzie coś "w praniu" to będę pisał Emotikon: Szczęśliwy

Kanał YT- Google Tag Manager: https://goo.gl/S2RM7X

Skrypt szukający słów kluczowych, które słabiej konwertują

Wszechwiedzący ✭

Polecam się :-)

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