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

Skrypt rejestrujący różne metryki - czy ktoś chce

Profesjonalista ✭ ✭ ✭

Hej,

 

Napisałem prosty skrypt, który codziennie zapisuje (w Google Sheets) kilka metryk.

Całość można fajnie podpiąć pod Google Data studio i śledzić na wykresie wyniki dla poszczególnych produktów.

 

Poniżej lista metryk, które zapisuje skrypt:

-CPC (ten który jest ustawiony w AdWords, nie średni CPC)

Przydaje się bo chcę śledzić zmiany jakie wprowadza narzędzie do optymalizacji stawek.

Poza tym fajnie jest widzieć na wykresie wpływ CPC na wyniki.

-Cena produktu (pobierana jest z Merchant Centre)

Mam klienta, u którego wyniki jakie osiąga dany produkt są ściśle powiązane z jego ceną. Oczywiście nie jest to jakiś wyjątek. Jedyną różnicą jest to, że tutaj 1 Funt (klient prowadzi biznes w UK) robi dużą różnicę. Dodatkowo, klient ten bardzo lubi zmieniać ceny :-) 

Przydatna sprawa móc to pokazać na ładnym wykresie.
Być może też masz podobnych klientów?

 

Pozostałe metryki to:

-Konwersje

-Kliki

-Wyświetlenia

-Koszt

-Średni CPC

-Data

 

Jeśli ktoś jest zainteresowany to mogę tutaj udostępnić skrypt.

W razie pytań czy problemów postaram się też pomóc (najlepiej jak będę potrafił).

 

Chciałem tylko zaznaczyć, że nie jestem zawodowym programistą.

Jeśli coś można było napisać lepiej / sprawniej to osoby bardziej doświadczone proszę o wyrozumiałość.

Dajcie znać nawet jeśli nie jesteście zainteresowani.

Przynajmniej będę wiedział :-)

 

Pozdrawiam,

Krzysiek

Czy moja odpowiedź była pomocna? Jeśli tak, oznacz ją jako „najlepszą odpowiedź”
Odpowiedź eksperta 2verified_user
1 ZAAKCEPTOWANE ROZWIĄZANIE

Zaakceptowane rozwiązania
Zaakceptowane rozwiązanie.
Rozwiązanie
Zaakceptowane przez: Adam Grabowski (Wschodząca Gwiazda)
marzec

Dot.: Skrypt rejestrujący różne metryki - czy ktoś chce

[ Edytowane ]
Profesjonalista ✭ ✭ ✭

Hej,

 

Podrzucam skrypt.

 

Jeśli pojawią sie jakieś pytania lub problemy to piszcie. Postaram się pomóc!

 

@Adam Grabowski

Rozumiem sugestię. Chcialem tylko sprawdzić czy jest zainteresowanie (byłem raczej niepewny).
Okazało się, że jest, dlatego przygotowałem instrukcję i opsiałem skrypt.

Dla pewnosci przetestowałem go też na innym koncie i przeszedłem caly proces instalcji krok po kroku.
Wszystko to zajęło mi trochę czasu - dlatego wolałem się upewnić.

 

Przyznam szczerze, że miałem też nadzieję na jakiegoś lajka na zachętę. "W końcu z tego froumowicz żyje" Cytując @Booguś :-)

 

 

Dzięki.

 

Edit: Nie wiem czemu, ale tam w skrypcie na dole w jednej linijce są emotki!

Prawidłowa linijka wygląda tak: 
Capture.JPG

 

 

 

----------Skrypt:

 

/*Skrypt coddzinnie zapisuje Cene, CPC, Klikniecia, Wyswietlenia, Sredni CPC, Konwersje
Sugeruje ustawic skrypt na godziny pornne np. 5 rano
Jest to wazne z dwoch powodow: 1) Konwersje zdarza sie zaktualizowac 2) Skrypt patrzy na dzien poprzedni (z powodu punktu pierwszego)

Instrukcja:
1. Utworz Arkusz w Google Sheets
2. W pierwszym wierszu dodaj nastepujace wartosci (w tej kolejnosci i w oddzielnych komorkach): "Data, Identyfikator Produktu, Max CPC, Klikniecia, Wyswietlenia, Konwersje, Koszt, Cena"
3. Przekopiuj skrypt do AdWords
4. Uzupelnij URL, NAZWE ARKUSZU, MERCHANT ID
5. Dodaj zaawansowane API: Content API
5. Autoryzuj Skrypt
6. Uruchom skrypt
7. Ponownie Autoryzuj Skrypt
7. Pojawi sie taki blad (to dobrze): Project XXX (tu jakis numer) is not found and cannot be used for API calls.
I dalej bedzie podany URL gdzie trzeba wejsc aby go wlaczyc. Przekopiuj ten URL do nowego okna. Kliknij w Library po lewej i odszukaj Content API for Shopping.
Wlacz Contet API for Shopping.

Tutaj instrukcja odnosnie Content API https://developers.google.com/adwords/scripts/docs/features/advanced-apis#enabling_advanced_apis
Gdyby cos bylo nie jasne...

8. Ustaw harmonogram skryptu codziennie / godzinny poranne - najlepiej 5 rano (skrypt zapisuje dane z dnia poprzedniego!)

Viola!

Autor: Krzysztof Bycina AD
*/


function main(){
var spreadSheetURL = 'TUTAJ URL'; //tutaj podaj URL do Google Sheet w takiej formie: https://docs.google.com/spreadsheets/d/testtoniejestprawdziwyURL/edit
var sheetName = 'TUTAJ NAZWA ARKUSZU'; //tutaj podaj nazwe arkuszu. Nie calego pliku tylko pojedynczego arkuszu - na dole po lewej! np. Sheet1
var merchantId = 'TUTAJ MERCHANT ID'; //tutaj podaj Merchant Id number
var spreadsheet = SpreadsheetApp.openByUrl(spreadSheetURL);
var sheet = spreadsheet.getSheetByName(sheetName);
var yesterdayD = new Date();
yesterdayD.setDate(yesterdayD.getDate() - 1); // tworzy wczorajsza data
yesterdayD = Utilities.formatDate(yesterdayD, "GMT", "yyyy-MM-dd")


var productGroups = AdWordsApp // patrzy tylko na produkty, ktore mialy przynajmniej jedno wyswietlenie (inaczej szybko zapelnilibysmy maxymalna liczbe wierszy w Google Sheets)
.productGroups()
.withCondition("Impressions > 1")
.forDateRange("YESTERDAY")
.get();

while (productGroups.hasNext()) {
var productGroup = productGroups.next();
var productItemId = productGroup.asItemId();
var maxCpc = productItemId.getMaxCpc();
var itemId = productItemId.getValue();
var stats = productItemId.getStatsFor('YESTERDAY');
var averageCpc = stats.getAverageCpc();
var clicks = stats.getClicks();
var impressions = stats.getImpressions();
var conversions = stats.getConversions();
var cost = stats.getCost();



if (itemId) { // Sprawdza czy Item Id nie jest pusty, jesli tak to pomija
itemId = itemId.toUpperCase() //Merchant Center API zwraca uwage na wielkosc liter u mnie na wszystkich kontach Item ID powinny byc z duzej litery dlatego stosuje metode toUpperCase
var itemId2 = "onlineEmotikon: JęzyklEmotikon: JęzykL:" + itemId; // Merchant Center API musi otrzmyac Item Id w nastepujacej formie: "online:[tutaj kod jezyka zakladam, ze uzywasz pl]:[tutaj kod Iso kraju, w ktorym dziala Merchant]. Moja wartosc wyglada tak: online:en:GB
var priceData = ShoppingContent.Products.get(merchantId, itemId2);
var price = priceData.price.value
sheet.appendRow([yesterdayD, itemId, maxCpc, averageCpc, clicks, impressions, conversions, cost, price]);

}
}
Logger.log("Completed!")
}

 

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

Wyświetl rozwiązanie w oryginalnym poście

Skrypt rejestrujący różne metryki - czy ktoś chce

Wszechwiedzący ✭

Fajna koncepcja - chętnie się pobawię Emotikon: Szczęśliwy

________
Booguś

Skrypt rejestrujący różne metryki - czy ktoś chce

Najlepszy Współtwórca

Również mogę skorzystać Emotikon: Mrugający

Dominik Myślak

Skrypt rejestrujący różne metryki - czy ktoś chce

Wschodząca Gwiazda

Krzysztof dobrze jakbyś od razu udostępniał skrypt, wtedy osoby zainteresowane nim, nie musiały Ci zajmować czasu. Pamiętaj, że nie zawsze będziesz dostępny. Ps. dziękujemy, że dzielisz się swoją wiedzą :-)

Zaakceptowane rozwiązanie.
Rozwiązanie
Zaakceptowane przez: Adam Grabowski (Wschodząca Gwiazda)
marzec

Dot.: Skrypt rejestrujący różne metryki - czy ktoś chce

[ Edytowane ]
Profesjonalista ✭ ✭ ✭

Hej,

 

Podrzucam skrypt.

 

Jeśli pojawią sie jakieś pytania lub problemy to piszcie. Postaram się pomóc!

 

@Adam Grabowski

Rozumiem sugestię. Chcialem tylko sprawdzić czy jest zainteresowanie (byłem raczej niepewny).
Okazało się, że jest, dlatego przygotowałem instrukcję i opsiałem skrypt.

Dla pewnosci przetestowałem go też na innym koncie i przeszedłem caly proces instalcji krok po kroku.
Wszystko to zajęło mi trochę czasu - dlatego wolałem się upewnić.

 

Przyznam szczerze, że miałem też nadzieję na jakiegoś lajka na zachętę. "W końcu z tego froumowicz żyje" Cytując @Booguś :-)

 

 

Dzięki.

 

Edit: Nie wiem czemu, ale tam w skrypcie na dole w jednej linijce są emotki!

Prawidłowa linijka wygląda tak: 
Capture.JPG

 

 

 

----------Skrypt:

 

/*Skrypt coddzinnie zapisuje Cene, CPC, Klikniecia, Wyswietlenia, Sredni CPC, Konwersje
Sugeruje ustawic skrypt na godziny pornne np. 5 rano
Jest to wazne z dwoch powodow: 1) Konwersje zdarza sie zaktualizowac 2) Skrypt patrzy na dzien poprzedni (z powodu punktu pierwszego)

Instrukcja:
1. Utworz Arkusz w Google Sheets
2. W pierwszym wierszu dodaj nastepujace wartosci (w tej kolejnosci i w oddzielnych komorkach): "Data, Identyfikator Produktu, Max CPC, Klikniecia, Wyswietlenia, Konwersje, Koszt, Cena"
3. Przekopiuj skrypt do AdWords
4. Uzupelnij URL, NAZWE ARKUSZU, MERCHANT ID
5. Dodaj zaawansowane API: Content API
5. Autoryzuj Skrypt
6. Uruchom skrypt
7. Ponownie Autoryzuj Skrypt
7. Pojawi sie taki blad (to dobrze): Project XXX (tu jakis numer) is not found and cannot be used for API calls.
I dalej bedzie podany URL gdzie trzeba wejsc aby go wlaczyc. Przekopiuj ten URL do nowego okna. Kliknij w Library po lewej i odszukaj Content API for Shopping.
Wlacz Contet API for Shopping.

Tutaj instrukcja odnosnie Content API https://developers.google.com/adwords/scripts/docs/features/advanced-apis#enabling_advanced_apis
Gdyby cos bylo nie jasne...

8. Ustaw harmonogram skryptu codziennie / godzinny poranne - najlepiej 5 rano (skrypt zapisuje dane z dnia poprzedniego!)

Viola!

Autor: Krzysztof Bycina AD
*/


function main(){
var spreadSheetURL = 'TUTAJ URL'; //tutaj podaj URL do Google Sheet w takiej formie: https://docs.google.com/spreadsheets/d/testtoniejestprawdziwyURL/edit
var sheetName = 'TUTAJ NAZWA ARKUSZU'; //tutaj podaj nazwe arkuszu. Nie calego pliku tylko pojedynczego arkuszu - na dole po lewej! np. Sheet1
var merchantId = 'TUTAJ MERCHANT ID'; //tutaj podaj Merchant Id number
var spreadsheet = SpreadsheetApp.openByUrl(spreadSheetURL);
var sheet = spreadsheet.getSheetByName(sheetName);
var yesterdayD = new Date();
yesterdayD.setDate(yesterdayD.getDate() - 1); // tworzy wczorajsza data
yesterdayD = Utilities.formatDate(yesterdayD, "GMT", "yyyy-MM-dd")


var productGroups = AdWordsApp // patrzy tylko na produkty, ktore mialy przynajmniej jedno wyswietlenie (inaczej szybko zapelnilibysmy maxymalna liczbe wierszy w Google Sheets)
.productGroups()
.withCondition("Impressions > 1")
.forDateRange("YESTERDAY")
.get();

while (productGroups.hasNext()) {
var productGroup = productGroups.next();
var productItemId = productGroup.asItemId();
var maxCpc = productItemId.getMaxCpc();
var itemId = productItemId.getValue();
var stats = productItemId.getStatsFor('YESTERDAY');
var averageCpc = stats.getAverageCpc();
var clicks = stats.getClicks();
var impressions = stats.getImpressions();
var conversions = stats.getConversions();
var cost = stats.getCost();



if (itemId) { // Sprawdza czy Item Id nie jest pusty, jesli tak to pomija
itemId = itemId.toUpperCase() //Merchant Center API zwraca uwage na wielkosc liter u mnie na wszystkich kontach Item ID powinny byc z duzej litery dlatego stosuje metode toUpperCase
var itemId2 = "onlineEmotikon: JęzyklEmotikon: JęzykL:" + itemId; // Merchant Center API musi otrzmyac Item Id w nastepujacej formie: "online:[tutaj kod jezyka zakladam, ze uzywasz pl]:[tutaj kod Iso kraju, w ktorym dziala Merchant]. Moja wartosc wyglada tak: online:en:GB
var priceData = ShoppingContent.Products.get(merchantId, itemId2);
var price = priceData.price.value
sheet.appendRow([yesterdayD, itemId, maxCpc, averageCpc, clicks, impressions, conversions, cost, price]);

}
}
Logger.log("Completed!")
}

 

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

Dot.: Skrypt rejestrujący różne metryki - czy ktoś chce

Najlepszy Współtwórca

Krzysiek wybierz Pełną wersję edytora i wybierz ikonkę do wklejania kodu

Screen Shot 03-12-18 at 02.01 PM.PNG

Dominik Myślak

Skrypt rejestrujący różne metryki - czy ktoś chce

Profesjonalista ✭ ✭ ✭

Hej @Dominik Myślak,

 

Zrobilem tak ale wciaz sa emotki w jednej linijce.

Tam powinno byc: var itemId2 = "online:XXXpl:XXXPL:" + itemId; (usun pogrubione XXX)

 

Da się to jakos ominąć?

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