Jednoduchý automatizovaný reporting s AdWords Scripts

Jan Zdarsa
Perf.cz
Published in
5 min readNov 4, 2015

Často se setkávám s tím, že by někdo potřeboval tahat konkrétní reporty z AdWords automaticky. Ideálně k tomu mohou posloužit AdWords Scripts. Jenže mnoho lidí se zalekne kódování a nemají potřebu učit se kvůli tomu JavaScript. Částečně je to škoda, ale řekl jsem si, že sepíši jednoduchý návod pro každého — i pro ty, co o JavaScriptu neví vůbec nic. A nic moc vědět ani nechtějí. Bude to jednoduché, slibuji!

Potřebujeme ale pochopit, co je to AWQL, k čemu slouží a jak ho využít. Zde to budou mít snažší všichni ti, co mají aspoň drobné základy SQL, ale věřte mi — je to tak jednoduché, že to pochopíte během chvilky. Tato část slouží k vytahování konkrétních dat z AdWords. Základní zápis AWQL vypadá takto:

SELECT x
FROM y
WHERE z = “hodnota”
DURING LAST_30_DAYS
ORDER BY x

Pojďme si jednotlivé části v tomto jednoduchém AWQL dotazu rozebrat:

SELECT — zde vybereme, jaké dimenze a metriky chceme mít v reportu obsažené (např. název kampaně, počet impresí, počet kliků, …).
FROM — existují různé reporty podobně jako v AdWords (např. přehled kampaní, klíčových slov, přehled reklam, …). V této části tedy vyberete, jaký report chcete využít.
WHERE — nastavení jedné či více podmínek, tedy nadefinování filtru (např. chci jen kampaně s více než 100 kliky, slova s alespoň 1 konverzí, …).
DURING — nastavení časového období, za jaké chci report stáhnout. V našem příkladu jsem určil posledních 30 dní (LAST_30_DAYS).
ORDER BY — definová, podle jaké metriky chceme data řadit (teoreticky nemusíme data řadit nijak a tuto podmínku tak můžeme vynechat). Což často uděláte.

Naprosto zásadní informace pro vás bude, jaké typy reportů v AWQL existují. Je jich mraky. A budou vám stačit téměř na vše. Jejich kompletní výčet naleznete zde.

A kde najdete jednotlivé metriky, které u těchto reportů můžete využít? To je snadné, stačí si na stejném odkazu vybraný report prokliknout a hned uvidíte, jaká všechna data můžete přes AdWords Scripts / AWQL stahovat. Pro příklad jsem vybral report CAMPAIGN_PERFORMANCE_REPORT. Na tomto odkazu si můžete prohlédnout, jaké všechny metriky můžete využít. Těch ale je, co?

Pojďme u tohoto reportu zůstat a zkusme si napsat jednoduchý AWQL dotaz:

SELECT CampaignName, Clicks, Impressions, Cost
FROM CAMPAIGN_PERFORMANCE_REPORT
WHERE Impressions > 10 AND Clicks > 1
DURING 20150901, 20150930

V tomto dotazu jsem vybral Název kampaně, počet kliků, počet impresí a cenu z reportu kampaní (CAMPAIGN_PERFORMANCE_REPORT). Jako podmínku jsem si nastavil, že chci zobrazit jen kampaně s více než 10 impresemi a více než 1 klikem. Použil jsem podmínky dvě a proto jsem mezi tyto podmínky umístil slovo AND. Tuto konstrukci si zapamatujte. Podmínka AND se nepoužívá po SELECT (zde je jen čárka), ale u WHERE ji používat musíte. Jako časové období jsem si vybral celé září.

Možná vás trošku zmátl zápis toho časového období. V tomto případě se jedná o dvě data — začátek a konec (mezi nimi je čárka). Jinak řečeno od — do. Jedná se o zápis datumu ve formátu YYYYMMDD. Kromě takto definovaného datumu existuje ještě několik dalších předdefinovaných předvoleb. Příklady těch nejpoužívanějších jsou tyto:

  • TODAY
  • YESTERDAY
  • LAST_7_DAYS
  • LAST_WEEK
  • LAST_14_DAYS
  • LAST_30_DAYS
  • THIS_MONTH

Vrátím se ale ještě k podmínkám. I ty mají několik různých variant. Pojďme si říct alespoň o těch nejpoužívanějších:

  • =nebo-li rovná se. Například pokud chcete vyfiltrovat slova jen s 0 konverzemi, zvolíte Conversions = 0
  • != přesný opak předchozí funkce. Například můžete chtít vyfiltrovat kampaně, které nemají žádnou impresi s podmínkou Impressions != 0
  • > větší než
  • >=větší než nebo rovno
  • < menší než
  • <= menší než nebo rovno
  • CONTAINS — pokud chcete najít kampaně, které obsahují nějaké slovo, tak využijete CONTAINS (v češtině obsahuje). Například vyfiltrování brandových kampaní napíšete jako CampaignName CONTAINS “Brand”. CONTAINS rozeznává velké a malé písmena, proto možná spíše využijete CONTAINS_IGNORE_CASE, které nerozeznává velká a malé písmena.
  • DOES_NOT_CONTAIN — opak předchozí funkce. Také rozeznává velká a malá písmena a tak často využijete spíše DOES_NOT_CONTAIN_IGNORE_CASE.

AWQL budete používat pravidelně a proto pro vás může být zajímavý nástroj AWQL.me, kde si můžete napsat jednotlivé AWQL dotazy a vyzkoušet si, jaký výstup získáte. Kromě hezky zpracované nápovědy v něm najdete i našeptávač, který vám velmi usnadní psaní prvních AWQL dotazů. Pokud nepotřebujete nic automatizovat a reporty si chcete jen jednou za čas stáhnout do CSV, tak ani nepotřebujete AdWords Scripts. Tento nástroj vám to umožní.

Ale zpět k AdWords Scripts. Základům AWQL již rozumíte a tak je na čase vše začít automatizovat. A je to opravdu jednoduché! Využijeme pouze tento drobný skript:

function main() {
// mezi uvozovky doplnte URL vytvoreneho Spreadsheetu
var SPREADSHEET_URL = “URL_VLOZTE_SEM”;
// mezi uvozovky doplnte nazev listu ve Spreadsheetu
var SHEET = “NAZEV_LISTU_VLOZTE_SEM”;
var ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL).getSheetByName(SHEET);
// mezi uvozovky napiste AWQL dotaz — cely na jeden radek
var report = AdWordsApp.report(“SELECT CampaignName, Clicks, Impressions, Cost FROM CAMPAIGN_PERFORMANCE_REPORT WHERE Impressions > 10 DURING LAST_30_DAYS”);
report.exportToSheet(ss);
}

Celý skript si přes copy&paste vložte do AdWords jako nový AdWords Scripts (pozor, je tam horizontální skrolování, tak si dejte pozor, ať ho zkopírujete opravdu celý). V předchozích příkladech jsem psal AWQL dotaz pro přehlednost do více řádků. To by vám standardně v AdWords Script editoru nefungovalo, bylo by potřeba kód lehce upravit. Proto vložte celý AWQL dotaz na jeden řádek a nepoužívejte enter. Nyní vám jen stačí vytvořit nový Google Spreadsheet, kam si přejete výsledky ukládat. Do skriptu jen vložíte jeho url (celou) a ve skriptu nadefinujete, do kterého z listů se má výsledek ukládat.

V AdWords můžete nastavit, že chcete spouštět skript každý den, týden, měsíc. Zkrátka jakkoli si přejete. Ale vše již bude automatické. Stačí jen nastavit plán spouštění daného AdWords skriptu.

Ale co kdybyste na nově vygenerovaný report chtěli někoho automaticky i upozorňovat emailem? I to je snadné! Do skriptu přidáme jen pár řádek:

function main() {
// mezi uvozovky doplnte URL vytvoreneho Spreadsheetu
var SPREADSHEET_URL = “URL_VLOZTE_SEM”;
// mezi uvozovky doplnte nazev listu ve Spreadsheetu
var SHEET = “NAZEV_LISTU_VLOZTE_SEM”;
var ss = SpreadsheetApp.openByUrl(SPREADSHEET_URL).getSheetByName(SHEET);
// mezi uvozovky napiste AWQL dotaz — cely na jeden radek
var report = AdWordsApp.report(“SELECT CampaignName, Clicks, Impressions, Cost FROM CAMPAIGN_PERFORMANCE_REPORT WHERE Impressions > 10 DURING LAST_30_DAYS”);
report.exportToSheet(ss);

// Napište, komu má email přijít
var recipients = “prvni@email.cz, druhy@email.cz”;
// Napište nadpis emailu
var subject = “Automatizovaný report z AdWords”
// Napiště tělo emailu
var body = “Aktuální report z AdWords naleznete na adrese “ + SPREADSHEET_URL + “.\n\n”;
MailApp.sendEmail(recipients,subject,body);
}

Stačí vám tedy pozměnit email adresy, kam chcete email poslat, změnit nadpis a případně i tělo emailu. Všimněte si, že jsem tam URL adresu nenapsal napevno, ale využil jsem proměnnou, kterou jste dříve ve skriptu nadefinovali. Nebudu zacházet do podrobností, ale pokud se chcete dále vzdělávat v JavaScriptu a pochopit tento kód, tak vás nasměruji na skvělý kurz na Codecademy.com.

Nyní již umíte napsat AWQL dotaz na vytáhnutí dat z AdWords, automatizovaně odesílat data do Google Spreadsheetu a dokonce na nový report i upozornit klienta. A to vše jen s pár řádky kódu. Nejsou ty AdWords Scripts skvělé? Příště pro vás zkusím připravit několik zajímavých AWQL dotazů.

--

--