Na konci ledna přišla pravidelná aktualizace Adwords API, která přináší velmi pozitivní novinky i do našich oblíbených Adwords skriptů.
Hlavní novinkou pro nás skriptaře jsou nové sloupce a reporty, které si můžeme pomocí AWQL stáhnout.
Jaké sloupce navíc nám tedy Google nadělil:
- FirstPositionCpc – simulace potřebné nabídky pro 1. pozici daného klíčového slova.
- EstimatedAddClicksAtFirstPositionCpc – kolik prokliků získám navíc na 1. pozici.
- EstimatedAddCostAtFirstPositionCpc – o kolik víc zaplatím za prokliky na 1. pozici.
- CreativeQualityScore – jak hodnotí Adwords relevanci reklamy daného klíčového slova.
- Not applicable – neví.
- Below average – podprůměrná.
- Average – průměrná.
- Above average – nadprůměrná.
- PostClickQualityScore – relevance vstupní stránky k Vašemu klíčovému slovu.
- Not applicable – neví.
- Below average – podprůměrná.
- Average – průměrná.
- Above average – nadprůměrná.
- SearchPredictedCtr – jak hodnotí Adwords Ctr Vašeho klíčového slova na dané pozici.
- Not applicable – neví.
- Below average – podprůměrná.
- Average – průměrná.
- Above average – nadprůměrná.
Co s tím tedy můžeme dělat
- Mohu automaticky reportovat klíčová slova, která mají malé CTR vzhledem k pozici.
- Mohu odhalit, která klíčová slova nesměřuji na ideální vstupní stránku.
- Mohu reportovat klíčová slova, která nemají relevantní reklamu.
- Díky metrice EstimatedAddClicksAtFirstPositionCpc a EstimatedAddCostAtFirstPositionCpc mohu zjistit, kolik prokliků a za jakou cenu získám navíc v případě nabídky na 1. pozici.
Zdrojový kód skriptu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
//SETTINGS - Vložte URL nového sešitu// var spreadsheet = SpreadsheetApp.openByUrl(''); function main(){ spreadsheet.setSpreadsheetLocale('en'); var sheetSettings = createOrGetSheet(spreadsheet, 'Nastavení', 0); var settingRange = sheetSettings.getRange(1,1,1,2); if(sheetSettings.getRange(1,2).isBlank()) { settingRange.setValues([['Počet dnů pro report',90]]); } var daysBack = sheetSettings.getRange(1,2).getValue(); var sheet = createOrGetSheet(spreadsheet, 'KW report', 1); var to = lynt_get_date(1); var from = lynt_get_date(daysBack); var dateRange = from + ',' + to; var report = AdWordsApp.report( " SELECT Criteria,AdGroupName, CampaignName, KeywordMatchType, Impressions, Clicks, Cost,AveragePosition, QualityScore, AverageCpc, AllConversionValue, CostPerAllConversion, AllConversions, AveragePosition, SearchImpressionShare, FirstPageCpc, TopOfPageCpc, CreativeQualityScore, SearchPredictedCtr, PostClickQualityScore, EstimatedAddCostAtFirstPositionCpc, EstimatedAddClicksAtFirstPositionCpc, FirstPositionCpc, CpcBid " + " FROM KEYWORDS_PERFORMANCE_REPORT"+ " WHERE Impressions > 10"+ " AND AdGroupStatus = ENABLED" + " AND CampaignStatus = ENABLED" + " AND Status = ENABLED" + " DURING " + dateRange); report.exportToSheet(sheet); } function lynt_DST(datum, offset){ var yr = datum.getFullYear(); var dst_start = new Date("March 14, " + yr +" 02:00:00"); var dst_end = new Date("November 07, " + yr +" 02:00:00"); var day = dst_start.getDay(); dst_start.setDate(14-day); day = dst_end.getDay(); dst_end.setDate(7-day); if (datum >= dst_start && datum < dst_end){ return offset+1; } else { return offset; } } //Creating or returning selected sheet function createOrGetSheet(reportSpreadsheet, name, position) { var sheet = reportSpreadsheet.getSheetByName(name); if(sheet == null) { return reportSpreadsheet.insertSheet(name,position); } else { return sheet; } } //Getting data for x days back in right format for AWQL query function lynt_get_date(pocet_dni) { var minule = new Date(); //kdyz je letni cas, tak o hodinu dele (GMT+1) var offset = lynt_DST(minule,1); minule.setTime(minule.getTime() - (1000 * 60 * 60 * (24) * pocet_dni) + offset); return lynt_format_awql_date(minule); } //Getting always last sunday with right formats for AWQL function lynt_get_sunday() { var minule = new Date(); //kdyz je letni cas, tak o hodinu dele (GMT+1) var offset = lynt_DST(minule,1); minule.setTime(minule.getTime() - (1000 * 60 * 60 * (24) * (minule.getDay())) + offset); return lynt_format_awql_date(minule); } //Getting x days from last sunday right formated for AWQL function lynt_get_xdays_back_from_sunday(pocet_dni) { var minule = new Date(); //kdyz je letni cas, tak o hodinu dele (GMT+1) var offset = lynt_DST(minule,1); minule.setTime(minule.getTime() - (1000 * 60 * 60 * (24) * pocet_dni) - (1000 * 60 * 60 * 24 * (minule.getDay()))+ offset); return lynt_format_awql_date(minule); } //Format date for AWQL function lynt_format_awql_date(datum){ return datum.getUTCFullYear()+("0"+(datum.getUTCMonth()+1)).slice(-2)+("0"+datum.getUTCDate()).slice(-2); } |
Martin Tomanek says
Perfektní skript! Díky
Petr Slavík says
Děkuji za skript, hodně mi pomohl! A pomůže 😉
Lukáš Kolovrat says
Také moc děkuji.
Skvělá práce.
David says
Zdravím, vyhodilo mi to chybu…niečo som zle nastavil? Dakujem
Invalid reporting query: KEYWORDS_PERFORMANCE_REPORT. (line 20)
Jakub says
Tak je někde problém ve zkopírování skriptu, je nutné vložit na začátek URL adresu sešitu do řádky 2 do uvozovek, ale jinak to jede, teď jsem to schválně otestoval. Zkusit znovu skript zkopírovat z kódu.
Jan says
Absolutne stejny problem. Fixnul to nekdo? Prekopirovaval jsem to snad 10x, stejna chybova hlaska.
Honza says
Jakube díky, funguje skvěle. Ve videu ukazuješ další listy – není tento někde ke stažení?
Loopka says
Ahoj, diki moc za super skript! Tiez by ma zaujimali tie zvysne sheets, ktore si prezentoval vo videu, ci to je iba workshopy?
Diki moc za odpoved
CRITICAL says
Tenhle skript nám moc pomohl. Díky!
Matěj Konečný says
Ahoj,
je možné dostat zápis QUERY pro „Špatná reklama“, „Špatná landing page“ a Špatné CTR u volné shody“ ?
Bohužel z nějakého důvodu mi nefungují početní funkce.
Děkuji moc
Ľuboš Dubovec says
Mne to tiež vypisuje danú chybu
Invalid reporting query: KEYWORDS_PERFORMANCE_REPORT. (line 20)
dal som 2 riadok do úvodzoviek a niekoľko krát som to skúsil prekopírovať a stále mi to nefunguje. Viete mi niekto poradiť ?
webdesign studio designcrew says
Díky za inspiraci a návod. Určitě využijeme pro naše klienty.
Lukáš Kolovrat says
Dobrý den,
Chystá aktualizace scriptu – zasazení do Nového prostředí Google Ads?
Neradi bychom v listopadu přestali script používat 🙁 Zkoušel jsem sám převést do nové syntaxe, ale bohužel se mi nedaří a script hlásí chyby.
Děkuji.