Blog

14 Articles

Első önálló AdWords Scriptünk

Az AdWords Scriptek fejlesztésének az elsajátítása nem egy pár órás feladat. Kellően meg kell ismerkedni az építőkockákkal, hogy a későbbiekben tudjuk, hogy ezekből hogyan lehet működő egységeket összerakni. Másik oldalról viszont nem akarom senkinek elvenni a kedvét attól, hogy folyamatosan csak elméletről beszélünk és nincs semmi olyan anyag, amit a gyakorlatban lehet használni. Éppen ezért most tartunk egy kis kitérőt és megírjuk első működő AdWords Scriptünket. Fel fogjuk használni a már megszerzett tudást, hogy hogyan érdemes AdWords Scripts algoritmust kreálni, viszont a kódolásnál lesznek olyan részek, amit jelen tudásunkkal még nem fogunk érteni, hisz nem ismerjük az építőkockákat.

Az első AdWords Scriptünk azt a feladatot fogja automatikusan teljesíteni, hogy hétfőnként le fogja kérni az elmúlt 7 napra a fiókunk kampányainak főbb metrikáit, mint az impressions, clicks, CTR, conversions és CPA. Ezeket egy Google spreadsheetbe fogjuk tárolni és minden hétnek egy új sheetet fogunk kreálni az adott nap dátumával, tehát hosszabb távon hetenként nézhetjük vissza az eredményt adott sheeten.

Fogok pár apróságot mutatni, amivel már most kicsit testreszabható lesz a scriptünk, viszont mélyebb testreszabásba egyelőre nem fogunk belemenni, mivel ennek csak a kellő alapok elsajátítása után van értelme. Nézzük, hogyan is néz ki a scriptünk kód szintjén és utána kielemezzük a lépéseket.

A kódot a Bulk Operations -> Scripts -> +SCRIPT menüben kell elhelyezni, illetve a kód mentése után a Create schedule menüben fogod tudni beállítani, hogy minden hétfő reggel lefusson a kód.

Dátum lekérése

A mai dátum lekérése pusztán azt a célt fogja szolgálni, hogy a sheet nevéhez beállíthassuk a mai nap dátumát. Ahogy az AdWords Scriptek algoritmizálása posztomban is írtam, az egyes utasításokat jobban elemi lépésekre kell bontani. Ebben az esetben sem mondhatom azt, hogy kérem a mai dátumot, hanem ezt kicsit jobban szétbontva kell a kódban megmondanom. Cserébe ott van a rugalmasság is, például nem csak azt mondhatom meg, hogy kérem a mai dátumot, hanem azt is, hogy milyen formátumban. Én most ezt a formátumot használom yyyy.MM.dd., de ezt könnyen át lehet írni más formátumra és az újonnan generált sheet neve ilyen formában lesz megadva.

Sheet generálása

Ebben a példában kilépünk az AdWords Scriptek világából, ugyanis a Google nem csak az AdWords számára kínál automatizálási lehetőségeket. Összefoglaló néven a Google Apps Scripts az a csomag, amely lehetővé teszi a Google termékek automatizálását. Mi most a Spreadsheet szolgáltatást fogjuk használni, ugyanis az AdWordsből kinyert adatainkat egy spreadsheetben szeretnénk letárolni.

Ennél a résznél már mindenképp szükséges saját paramétert használni, ugyanis az openByUrl rész után meg kell adnod annak a spreadsheetnek az URL-jét, amivel dolgozni szeretnél. Ha ezt nem állítod át, akkor hibára fog futni a script.

A Google Apps Scripts a későbbiekben is fontos kiegészítése lesz az AdWords Scriptsnek, ugyanis ezen platform segítségével tudunk kilépni a tisztán AdWordsös környezetből és behúzhatunk például Google Analytics adatokat vagy épp kifelé küldhetünk adatokat a spreadsheetbe.

Előző hét lekérése

Ebben a részben definiáljuk, hogy milyen adatokat és milyen időtávra szeretnénk lekérni. Egyelőre nézzünk annyi paraméterezési lehetőséget a kódban, hogy milyen oszlopokat szeretnénk lekérni. Ebben segítségünkre lesz a CAMPAIGN_PERFORMANCE_REPORT dokumentációja. A jobb oldalon fogod látni, hogy milyen oszlopok állnak rendelkezésünkre. A SELECT utasítás után tudod beállítani, hogy milyen oszlopokat és milyen sorrendben szeretnél látni.

A dokumentációk elsőre kaotikusak lehetnek, hogy mit és hol találunk benne, de ezek nagyon hasznos segédletek lesznek a későbbiekben, mert gyakorlatilag nem lesz olyan kérdés, amire ezek ne tudnának választ adni. Én mai napig rengeteg dolgot nem tudok fejből, de tudom azt, hogy milyen dokumentációt kell kinyitni és hol találom a szükséges dolgokat. Pár alapvető utasítással jó tisztában lenni fejből, de az utasítások többségét fölösleges megtanulni, a dokumentáció a barátod.

AdWords Scripts dióhéjban

Pár soros példánk is jól mutatja, hogy már egy ilyen rövid kóddal lehet hasznos AdWords Scriptet fejleszteni. Ráadásul egy ilyen megoldásnál is rengeteg dolgot lehet változtatni, finom hangolni, hogy az adott célt a lehető legjobb módon kiszolgálja a script.

A mostani posztban nem néztük meg részletesen a kód működését, de ahogy ezt a posztom elején is említettem, ehhez először arra van szükség, hogy az AdWords Scripts építőkockáit megismerjük és utána érdemes ilyen részletességgel a kódot megérteni.

AdWords Scriptek algoritmizálása

Amikor a webes világba csöppentem, akkor az öcsémmel kezdtünk el pár online projektet csinálni. Ő ebben az időben még középiskolás volt, de már egész ügyesen ment neki a webfejlesztés. Az akkori fejemmel nagyon nem láttam át a fejlesztések folyamatát, emiatt csak abban az esetben voltam nyugodt a projektek haladásának tekintetében, hogy ha ő a gép előtt ült és kódolt. Mivel sok órán unatkozott, ezért javasoltam neki, hogy kereshetne valami appot (iPhone 3G korában járunk), amin tudna az órán kódolni, így biztosan haladni fogunk a projekttel… Erősen vakarta a fejét az ötletre, de mondta, hogy ne aggódjak, mert hasznosan kitölti az időt az órán. Gondolkozik az algoritmuson. Mondtam neki, hogy nem kell ezen gondolkozni, tudja, hogy mi a feladat, le kell ülni kódolni, így fogunk haladni előre.

Egy idő után megértettem, hogy ő miken is “gondolkozott” ilyenkor (nem az élet nagy dolgain), de úgy igazán akkor kezdtem el érezni, hogy mennyire rossz volt az akkori megközelítésem, amikor én magam is elkezdtem kódolni. Ma már egy projekt első részét leginkább papírral és tollal kezdem, hogy leírjam a lépéseket, azaz megfogalmazzam az algoritmust. De mi is ez az algoritmus?

A wikipédián található megfogalmazás szerint olyan megengedett lépésekből álló módszer, utasítás sorozat, részletes útmutatás vagy receptet értünk, ami alkalmas az adott probléma megoldására. Az én megfogalmazásomban az algoritmus olyan lépések sorozata, ahol a kezdőpontból biztosan eljutunk valamelyik végpontra. Nézzünk pár algoritmusra példát a hétköznapi életből, hogy érthetőbb legyen az algoritmus fogalma.

Az algoritmusom célja, hogy eldöntsem, hogy ma mit sportolok. Itt a kezdőpont az, hogy felteszem a kérdést, hogy mit sportoljak és valamilyen végpontra el fogok jutni, hogy mit sportoljak ma.

Mit sportoljak ma?

  • Jó idő lesz?
    • Ha igen, akkor futni megyek
    • Egyébként elmegyek az edzőterembe

Rettentő egyszerű a példa, de ha elkezdjük ezt az algoritmust, akkor egyrészt biztosan lesz valamilyen kimenete, illetve a döntéshozatal lefolyása minden esetben ugyanúgy fog történni.

Tegyük fel, hogy jó idő volt, elmentünk futni, viszont rájöttünk, hogy mi inkább úgy szeretnénk sportolni, hogy ezt másokkal együtt tesszük. Ezért ha el tud jönni valamelyik barátunk futni, akkor futni megyünk, ha nem, akkor edzőterembe megyünk. Nem csak egy barátunkat kérdezhetjük meg, mert lehet, hogy az első nem ér rá, több helyen lehet próbálkozni. Fontos megjegyezni, hogy futni továbbra is csak akkor megyünk, hogy ha jó idő van. Nézzük meg, hogyan módosul így az algoritmusunk.

  • Jó idő lesz?
    • Ha igen, akkor felhívom az első barátomat, hogy van-e kedve velem jönni.
      • Felhívtam az első barátomat
        • Ha eljön velem, akkor nem hívok mást és elmegyek futni
        • Ha nem jön el velem, akkor hívom a következő barátomat (itt visszaugrunk a “felhívtam az első barátomat” lépéshez)
      • Ha nincs egy barátom se, aki eljön velem futni, akkor hiába van jó idő, de inkább edzőterembe megyek
    • Egyébként elmegyek az edzőterembe

Látható, hogy rengeteg olyan hétköznapi döntéshozatal van, amit lehet algoritmizálni. Lépésről lépésre tudjuk, hogy merre megyünk tovább és mindig lesz valamilyen kimenet.

A gépek alapvetően rettentően buták, semmit nem tudnak maguktól, de ha lépésről lépésre megmondjuk nekik, hogy mit kell csinálni, akkor viszont rettentő gyorsan meg tudják oldani a feladatot.

Nézzünk egy olyan példát, ami már az AdWordshöz kapcsolódik és fogalmazzuk meg lépésről lépésre, hogy a gépnek mit kell majd csinálnia.

Szeretnénk tesztelni, hogy mi történik, hogy ha egyik hétről a másikra emelünk a liciteken a jól teljesítő kulcsszavaknál, akkor ezzel milyen eredményt érünk el konverziós volumen és CPA tekintetében. PPC-s szempontból értjük a kérdést, de ezt a gép számára még nem fogjuk tudni továbbítani, mert ő továbbra is csak egy buta szerkezet. Lépésről lépésre pontosan le kell írnunk, hogy mit szeretnénk.

  • Adott időpillanatban vizsgálja meg a kulcsszavak CPA-ját az elmúlt 7 napra és válassza ki azokat a kulcsszavakat, ahol a CPA kisebb, mint a fiók átlag CPA
  • Az így kiválasztott kulcsszavaknál növeljük a licitet 20%-kal
  • Egy hét eltelte után a korábban kiválasztott kulcsszavaknál kérjük le a CPA és konverziók metrikát az elmúlt 7 napra
  • Menjünk végig a kiválasztott kulcsszavakon egyesével és végezzük el a következő lépéseket minden kulcsszónál
    • Ha Időszak 2 CPA nem lett 20%-kal több Időszak 1 CPA-nál és Időszak 2 konverziók 20%-nál több lett, mint  Időszak 1 konverziók, akkor licitet növelünk 10%-kal
    • Ha Időszak 2 CPA 20%-kal lett több Időszak 1 CPA-nál és Időszak 2 konverziók nem lett több 20%-nál, mint Időszak 1 konverziók, akkor licitet csökkentünk 10%-kal
    • Minden egyéb esetben a licit változatlan marad

Ezzel már pontosan definiáljuk, hogy milyen lépéseken kell végigmennünk és milyen kimenetelek lesznek. Ahogy látható, ehhez semmi kódolási tudás nem kell, egyszerűen csak PPC-s ismereteinket kell használni, hogy önálló logikákat építsünk. A mostani posztnak az a célja, hogy meg tudjuk fogalmazni, hogy az algoritmusunk mit csinál és valamilyen úton vége legyen, tehát legyen kimenetele.

A későbbiekben látni fogjuk, hogy ezeket az algoritmusokat még tovább kell majd bontani, hogy az már kódolható legyen. Például olyat nem tudunk mondani, hogy “válassza ki azokat a kulcsszavakat, ahol a CPA kisebb, mint a fiók átlag CPA”, itt még elemibb lépéseket kell majd használnunk, de ezzel fogunk még a későbbiekben foglalkozni.

Összegezve: az algoritmus megtervezése elengedhetetlen dolog és ha az egyes lépéseket precízen kidolgozzuk, akkor onnantól kezdve sokkal könnyebb lesz, hogy az AdWords automatizálási folyamatot működő kódba átültessük.
Ha van pár perced, akkor írd meg kommentben saját algoritmusod, hogy mások is tanulhassanak a példádból.

Automatizált szabályok vs. AdWords Scripts

Mikor elkezdtem AdWords kampányok menedzselésével foglalkozni és megismertem az alapvető logikákat, akkor gyorsan megfogalmazódott bennem, hogy bizonyos feladatok mennyivel egyszerűbbek lennének, ha nem egyesével kellene minden lépést végig kattingatnom. Jól emlékszem arra a napra, amikor felfedeztem az automatizált szabályok menü pontot és azt éreztem, hogy eljött a kánaán. Innentől nincs több optimalizálási meló, a kampány felállításkor belövök pár szabályt, aztán dőlnek az eredmények…

Az utópisztikus víziómról elég hamar kiderült, hogy ez azért nem teljesen így működik, de pár konklúzióval azért gazdagabb lettem:

  • AdWords kampányok menedzselésénél mindenképp érdemes az automatizálás kérdéskörével foglalkozni.
  • Az automatizálás jó dolog, de nem szabad szent grálként tekinteni rá.
  • Nem feltétlenül érdemes mindent automatizálni, meg kell találni adott projektnél az arany középutat.
  • Csak addig célszerű növelni az automatizált megoldás komplexitását, amíg tisztán átlátható a működése és érthető, hogy mi, miért történik.
  • Az automatizált szabályok egy remek feature az AdWords felületén, sok kérdést le lehet vele kezelni, de vannak határai.

A következőkben az utolsó pontot fogom kifejteni részletesebben, hogy jobban értsük, hogy mik a határai az automatizált szabályoknak és hol jön képbe az AdWords Scripts, amivel további automatizálásokat tudunk lekezelni.

Különböző időszak metrikáinak felhasználása

Egy jól működő optimalizálási logika, hogy hosszabb távon vizsgáljuk adott kulcsszó teljesítményét konverziós költség vagy ROI alapján, mert csak ilyen időtávon áll rendelkezésre elegendő volumenű adat, hogy értékeljük adott kulcsszó performanciáját. Az adatok alapján látni fogjuk, hogy honnan érdemes több forgalmat hozni és honnan kevesebbet.

Az átlagos pozíció metrika alapján könnyen meg tudjuk nézni, hogy milyen mozgásterünk van a licitek növelésére vagy csökkentésére. Igen ám, viszont itt nem ugyanazt a hosszabb időtávot szeretnénk nézni, mint a CPA vagy ROI vizsgálatánál, mert minket az érdekel, hogy most hol járunk pozícióban az adott kulcsszóval. Tehát időszak tekintetében éppen az ellenkezőt szeretnénk: egy igen rövid időtávon vizsgálni a kulcsszó átlagos pozícióját.

Az hogy csak egy időszakot lehet kiválasztani az adatok lekéréséhez az automatizált szabályoknak egy limitációja. Például mondhatjuk azt, hogy vizsgáljuk a kulcsszavak CPA/ROI értékét 3 hónapos időtávon és nézzük meg, hogy milyen pozícióban voltak. A CPA/ROI érték rendben lesz, viszont a 3 hónapos időszakra vonatkozó átlagos pozíció teljesen bizonytalan, hogy egyezik-e a jelen értékkel, pedig mi erre lennénk kíváncsiak. Meg lehetne fordítani, hogy az 1 hetes időszakon vizsgáljuk a metrikákat, akkor az átlagos pozíció rendben lesz, viszont a CPA/ROI metrikára fogunk nem túl mérvadó adatot kapni.

Emiatt az lenne a jó, hogy ha per kulcsszó látnánk, hogy adott kulcsszó hogyan teljesített hosszabb időtávon CPA/ROI szempontból, illetve milyen pozícióban van most a kulcsszó. Ez az AdWords Scripts segítségével megvalósítható és tetszőlegesen tovább fűzhető, hogy az így kinyert adatokat milyen optimalizálási logikában használjuk.

Automatizált szabályoknál nem elérhető metrikák

Az egyszerűség kedvéért maradjunk a fenti példánál, hogy a kulcsszó aktuális helyzetét figyeljük a versenyben. Az átlagos pozíció mellett/helyett behozhatjuk a képbe az impression share metrikát is, de ez az automatizált szabályoknál nem elérhető, viszont AdWords Scriptsben igen. Már elöljáróban lehet szemezgetni, hogy az AdWords Scripts által milyen metrikákhoz férünk hozzá, de fogunk a témával részletesen foglalkozni a későbbiekben.

https://developers.google.com/adwords/api/docs/appendix/reports

Külső adatforrások becsatlakoztatása

Napi munkánk során jól látjuk, hogy az AdWords rengeteg adatot termel, aminek a segítségével jó optimalizálási döntéseket tudunk hozni. Viszont ne feledjük, hogy rengeteg olyan üzleti információ van, amit még hasznosítani tudnánk kampányaink optimalizálása folyamán, csak ezek már nem az AdWords adatbázisában vannak. Például látjuk azt a trendet, hogy azok a kulcsszavak jobban konvertálnak, amikkel olyan terméket hirdetünk, ami épp van raktáron.

Az AdWords Scripts lehetőségeivel ez az igény könnyen megvalósítható, ugyanis külső adatforrás segítségével akár óránként lekérhetjük, hogy épp mi van raktáron és mi nincs. Ami épp raktáron van, ott futni fog a hirdetéscsoport, ami pedig nincs, ott szünetelni fog.

Itt kettős előnyét is felfedezhetjük az AdWords Scriptsnek. Egyrészt nincs az az ember, aki óránként át tudna nyálazni több ezer terméket és az AdWords felületén végig kattingatni a szükséges lépéseket. Másrészt az AdWords felületén nincs ilyen lehetőség, hogy külső adatforrást csatornázzunk be és onnan nyerjük ki az automatizáláshoz szükséges adatokat.

Automatizált szabályok hatóköre

Jelenleg a következő hatóköröket lehet alkalmazni az automatizált szabályainkra.

  • Teljes fiók
  • Egy kiválasztott kampány
  • Egy kiválasztott ad group

Lehet még azért csavarni egyet a szabályok hatókörén. Az előzőekben nem volt benne az a lehetőség, hogy csak adott labelre alkalmazzuk a szabályokat, viszont a feltételnél beállíthatunk olyat, hogy az adott entitásnak rendelkeznie kell az adott labellel. Így máris léptünk egy szintet, tehát lehet okosan bővíteni a szabályok hatókörét.

Az AdWords Scripts még ennél is szabadabb kezet biztosít számunkra az automatizálás hatókörét illetően.

Melyiket használjam?

Ha összegezzük az eddigieket, akkor azt láthatjuk, hogy az AdWords Scripts segítségével jóval tágabbak a lehetőségeink, viszont az automatizált szabályokkal is igen sokáig el lehet jutni. Adott projektnél össze kell szedni az automatizálási lehetőségeket és ez alapján kell dönteni, hogy az adott igény kivitelezhető automatizált szabályokkal vagy több mozgástérre van szükségünk, emiatt az AdWords Scripts lesz a jó választás.

Mi a célja az AdWords Scripts.hu-nak?

Szerencsés embernek tartom magam, mivel nagyon szeretem azt, amit napi szinten csinálok. Nap, mint nap nagy lendülettel látok neki a feladatoknak, de néha bennem is feljön az az érzés, hogy milyen jó lenne, hogy ha egy robot megcsinálná a feladataimat, akár még jobban is, mint én és ezzel még szabadidőm is szabadulna fel. A kép rendkívül idilli, a gyakorlatban azonban kevés embert ismerünk, akinek csak annyi a feladata, hogy ránéz a robotjára, hogy végzi-e még a munkát.

Másik oldalról viszont azt halljuk, hogy a világ egyre inkább automatizálódik, egyre több helyen robotok veszik át az emberek munkáját. Ami még fontos velejárója az automatizálásnak, hogy az automatizálást kódolás útján lehet megvalósítani. Nem véletlen van itt is ugrásszerű növekedés a kódolás oktatásában, hisz komoly piaci igény mutatkozik erre.

A két előbbi gondolat egymással ellentétes, de akkor mi az igazság és legfőképp mi vonatkozik ránk a digitális marketing területén? Lesz olyan robotunk, ami mindent megcsinál helyettünk vagy továbbra is nap, mint nap a gép előtt fogunk ülni, hogy egyre optimálisabb kampányokat futtassunk?

Véleményem szerint a digitális marketing feladatok ketté fognak válni. Lesznek olyan feladatok, amiket a humán intelligencia mindig hatékonyabban fog tudni megoldani, mint például stratégia alkotás, ad copy írás vagy landing oldal szövegírás. A másik oldalon pedig olyan feladatok lesznek, amiben a gépek lesznek jobbak. Erre igen jó példa a bid management, amit ma még sokszor kézzel csinálunk, mert az eszközök hatékonysága változó, de csak idő kérdése, hogy mikor lesznek olyan általánosan elérhető bid management algoritmusok, amik használatával a manuális licitálás már nem fog az eszünkbe jutni.

Sok olyan eszköz és eszközön belüli funkció van, ami önállóan tud automatizált feladatokat végrehajtani, de így korlátoltak a lehetőségeink. Kódolás révén viszont a saját igényeink mentén tudunk automatizált rendszereket létrehozni, sokkal tágabbak lesznek a lehetőségek, mintha csak már kész elemeket használnánk fel.

A kódolás IT terület, éppen ezért a marketingesek számára kihívás, hogy hogyan lépjenek erre a területre. Bár nagyon motiváló, hogy külső segítség nélkül jóval eredményesebbek tudnának lenni, viszont ezért be kell fektetni abba, hogy megtanuljanak kódolni.

PPC-sként én ugyanebben a cipőben jártam. Láttam az automatizálásban rejlő lehetőségeket, viszont nulla technikai tudással igen nehéz ezen az úton elindulni.

A Google AdWords az egyik leggyakrabban használt hirdetési rendszer a PPC-sek körében. Az automata szabályok révén mindenféle kódolási tudás nélkül nyújt automatizálási lehetőséget, ezen a szinten is sokáig el lehet jutni. Ezt követően viszont nagyságrendi ugrás az AdWords Scripts, amivel sokkal tágabbra nyílnak az automatizálási lehetőségeink. Itt már kell tudnunk kódolni, viszont még mindig nem egy külső API alkalmazást kell fejlesztenünk, ami még egy jóval komplexebb projekt.

Az AdWordsScipts.hu célja, hogy PPC-seket segítsen abban, hogy lépésről lépésre elmerüljenek az AdWords Scripts lehetőségeiben és ezzel párhuzamosan megtanuljanak kódolni, amivel önálló scripteket tudnak létrehozni.

Saját példámon megtanultam, hogy bár nem egyszerű PPC-sként minden kódolási tudás nélkül ezen az úton elindulni, de kellő motiváltság esetén el lehet sajátítani a szükséges tudást.

Terveim szerint átlagosan kéthetente fog egy-egy új poszt felkerülni. Lépésről lépésre fogunk haladni, ami kicsit lassabb lesz, de ennek jóval több értelmét látom, mintsem, hogy felületesen karcoljunk csak egy-egy részt, ami nem fog használható tudást eredményezni.

Minden visszajelzést szívesen veszek, hogy mit érdemes finom hangolni a koncepción, hogy a lehető legjobban át tudjam adni a tudást, amit eddig szereztem.