Obecnie 288 forumowiczów jest online
Obecnie 288 forumowiczów jest online
Pytania nie pasujące do innych kategorii.
Poprowadź mnie
star_border
Odpowiedz

Skrypty Adwords - wydzielenie kampanii sieci reklamowej

Student ✭ ✭

Cześć,

 

W ostatnim czasie zacząłem działać ze skryptami w Adwords i pisząc jeden z nich natknąłem się na problem.

Ale od początku...

Efektem działania skryptu miało być wykluczenie 1 (słownie: jednej) witryny we wszystkich kampaniach sieci reklamowej, na wszystkich kontach zawartych w MCC. 

MCC jest bardzo duże, wszystkich kampanii (działających) w nim jest w tej chwili kilka tysięcy.

Napisałem skrypt działający na poziomie MCC i funkcję która tworzy wykluczenie witryny w danej kampanii.

Nie zaskoczył mnie fakty, gdy przy próbie utworzenia takiego wykluczenia dla kampanii w wyszukiwarce wyskakuje błąd i skrypt się zatrzymuje.

Czy w skryptach Adwords jest jakaś funkcja która umożliwia wzięcie pod uwagę tylko kampanie działające w sieci reklamowej Google?

 

 

 

Odpowiedź eksperta 1verified_user

Zaakceptowane rozwiązania
Zaakceptowane rozwiązanie.
Rozwiązanie
Zaakceptowane przez autora tematu: Krzysztof W
września 2015

Dot.: Skrypty Adwords - wydzielenie kampanii sieci reklamowej

Wschodząca Gwiazda
Popatrz jakie są dostępne atrybuty w raporcie skuteczności kampanii i może znajdziesz jakieś pole, które pozwoli Ci odfiltrować w zapytaniu zbędne kampanie:
https://developers.google.com/adwords/api/docs/appendix/reports/campaign-performance-report
Tomasz Ciepłucha

Wyświetl rozwiązanie w oryginalnym poście


Wszystkie odpowiedzi

Dot.: Skrypty Adwords - wydzielenie kampanii sieci reklamowej

Wschodząca Gwiazda

Cześć,

 

nie wiem dokładnie jak jest napisany Twój skrypt i z jakich metod korzystasz natomiast za pomocą raportu skuteczności kampanii możesz pobrać wszystkie identyfikatory kampanii kierowanych na sieć reklamową.

 

Fragment skryptu przetwarzający już konkretne konto mógłby wyglądać tak:

 

var report = AdWordsApp.report("SELECT CampaignId FROM CAMPAIGN_PERFORMANCE_REPORT WHERE AdNetworkType1=CONTENT AND Impressions > 0 DURING LAST_MONTH");
  var rows = report.rows();  
  while(rows.hasNext()){    
    var row = rows.next();
    Logger.log(row['CampaignId']); 
  }

Określając warunek, AdNetworkType1=CONTENT pobieramy tylko kampanie w sieci reklamowej.

 

 

Drugi sposób to sprawdzanie, czy kampania ma miejsca docelowe i jeśli tak to dodajesz wykluczenie, jeśli nie to nic nie robisz.

var campaigns = AdWordsApp.campaigns().get();
while(campaigns.hasNext()){
    var campaign = campaigns.next();
    var placements = campaign.display().placements().get();
    Logger.log(campaign.getName() +": "+ placements.totalNumEntities());
}

 Powyższy kod wyprintowuje do loga nazwy kampanii wraz z ilością miejsc docelowych. Sprawdzając warunek:

placements.totalNumEntities()>0

możemy wyeliminować kampanie bez miejsc docelowych, czyli w sieci wyszukiwania.

 

Natomiast zastanawiam się, czy przerwanie skryptu nie jest związane z przekroczeniem czasu lub przekroczeniem maksymalnej ilości kont, jakie możesz przetwarzać jednocześnie.

 

Używasz przetwarzania równoległego - czyli funkcji executeInParallel?

Tomasz Ciepłucha

Dot.: Skrypty Adwords - wydzielenie kampanii sieci reklamowej

Student ✭ ✭
Dzięki za odpowiedź.

Prawdę mówiąc bardzo zaciekawiło mnie rozwiązanie nr. 1 Rozumiem, że w tabeli "rows" będziemy mieli ID-ki kampanii które kierowane są na sieć reklamową, tak?
Jeżeli tak, to przy pomocy prostego "selectora" możemy wyciągać kampania po kampanii.

to by było świetne, spróbuję. Emotikon: Szczęśliwy

Co do drugiego pomysłu to nie wiem czy to zadziała bo co z kampaniami które nie mają miejsc docelowych, są kierowane np. po zainteresowaniach? Wiem, że wykryje to automatyczne miejsca ale w przypadku wstrzymanej kampanii chyba nie, co?
Przerwanie skryptu było spowodowane próbą wykluczenia witryny w kampanii kierowanej na sieć wyszukiwania. Rozwiązałem ten problem, wrzucając funkcję dodającą wykluczenie do klauzuli try...catch.

Nie kojarzę aby używał przetwarzania równoległego, więc pewnie nie używam? Co to daje?


Dot.: Skrypty Adwords - wydzielenie kampanii sieci reklamowej

[ Edytowane ]
Wschodząca Gwiazda

W podanym przykładzie "rows" nie jest tabelą tylko iteratorem - w tym przypadku iteratorem raportu.
Tak jak napisałem w przykładzie za pomocą funkcji next() pobieramy kolejne wiersze raportu i następnie mamy dostęp do pobranych danych - w moim przykładzie jedyne dane to "CampaignId".
Ten przykład, jaki napisałem dosłownie wypisuje do loga - Logger.log() - identyfikatory wszystkich kampanii w sieci reklamowej, które w ostatnim miesiącu miały wyświetlenia.

W drugim przykładzie pobierane są wszystkie kampanie (wstrzymane, czy nie - nie ma znaczenia, bo nie są określone dodatkowe warunki).

Jeżeli masz skrypt działający z poziomu MCC to konta możesz przetwarzać albo jedno po drugim, albo równolegle. Przetwarzanie równoległe (jednoczesne) powoduje znaczące skrócenie czasu. Minusem jest limit 50 kont przetwarzanych jednocześnie.

Więcej tutaj na ten temat:
https://developers.google.com/adwords/scripts/docs/features/mcc

Tomasz Ciepłucha

Dot.: Skrypty Adwords - wydzielenie kampanii sieci reklamowej

Student ✭ ✭
Ok, tu mamy jasność, będę w takim razie działał.

W międzyczasie wpadł kolejny problem. Słyszał ktoś może o bugu w Adwordsie który polega na tym, że w przypadku gdy w kampanii kierowanej na aplikacje w mobile dodamy do wykluczenia choć jedną witrynę kampania ta ogóle przestaje się wyświetlać? Ktoś miał do czynienia z tym?
Problem w moim skrypcie polega na tym, że w takich kampaniach jest możliwe dodanie wykluczanej witryny tyle, że jak się okazało zatrzymuje to permanentnie wyświetlanie w niej reklam. Przez to muszę znaleźć sposób aby kampanie tego typu również wykluczyć.
Zaakceptowane rozwiązanie.
Rozwiązanie
Zaakceptowane przez autora tematu: Krzysztof W
września 2015

Dot.: Skrypty Adwords - wydzielenie kampanii sieci reklamowej

Wschodząca Gwiazda
Popatrz jakie są dostępne atrybuty w raporcie skuteczności kampanii i może znajdziesz jakieś pole, które pozwoli Ci odfiltrować w zapytaniu zbędne kampanie:
https://developers.google.com/adwords/api/docs/appendix/reports/campaign-performance-report
Tomasz Ciepłucha