Jedním z hlavních cílů při optimalizaci Adwords kampaně je vysoké skóre kvality, které u klíčového slova ovlivňuje spousta faktorů ( vše od míry prokliku, správného inzerátu, rychlé a relevantní vstupní stránky, až po Vaše rozšíření reklam). Bohužel skóre kvality se každý den aktualizuje a my k němu nemáme přístup historicky (pokud si ho například neukládáme pomocí skriptu do Big Query. O Biq Query více na mém workshopu na Marketing Festivalu).
Co někteří PPCčkaři dělají je, že používají skript na sledování váženého průměru skóre kvality celého účtu, který napsal Frederick Vallaeys . Problém tohoto skriptu je, že sice víte, jak se Vám vyvíjí skóre kvality, ale nemáte představu v jaké části účtu jsou ty “špatná klíčová slova”. A to je přesně to, co dělá můj skript:
- Stáhne data za posledních 30 dní na úrovni klíčových slov.
- Spočítá vážený průměr skóre kvality pro každou reklamní sestavu.
- Spočítá počet klíčových slov, které mají skóre kvality menší než 6 v rámci reklamní sestavy.
- Seřadí reklamní sestavy podle počtu zobrazení.
Pokud s tímto reportem budete aktivně pracovat, získáte lepší skóre kvality celého účtu, zlepšíte relevanci Vaší inzerce a dlouhodobě ušetříte. Pokud skript použijte prosím o zpětnou vazbu. Je možné doplnit nějaké chybějící sloupce, případně poladit vizualizaci reportu.
Jak skript nasadit
- Zkopírujte celý skript do svého reklamního účtu.
- Vložte do uvozovek odkaz na Váš Google Spreadsheet, kam chcete výsledky zapisovat.
- Stačí nastavit automatickou aktualizaci jednou týdně.
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 89 90 91 92 93 94 95 |
//Creating or returning selected sheet function createOrGetSheet(reportSpreadsheet, name, position) { var sheet = reportSpreadsheet.getSheetByName(name); if(!sheet) { return reportSpreadsheet.insertSheet(name,position); } else { return sheet; } } function main() { var spreadhsheet = SpreadsheetApp.openByUrl(""); // Vložte celou URL Vašeho spreadheetu spreadhsheet.setSpreadsheetLocale('en'); spreadhsheet.setSpreadsheetTimeZone("Europe/Prague"); var avgQs = createOrGetSheet(spreadhsheet,"Data",1); // Getting Impressions, QS for keywords with more than 10 impression for last 30 days var report = AdWordsApp.report( "SELECT Criteria, AdGroupName, AdGroupId, CampaignName, Impressions, Clicks, Ctr, ConvertedClicks, QualityScore " + " FROM KEYWORDS_PERFORMANCE_REPORT " + " WHERE " + " AdNetworkType1 = 'SEARCH'" + " AND Impressions > 10" + " AND CampaignStatus = ENABLED" + " AND AdGroupStatus = ENABLED" + " AND Status = ENABLED" + " DURING LAST_30_DAYS"); //Creating two arrays, one with adGroups Ids (ids are positions in array with results) second with data for one adGroup var adGroupIds = []; var adGroupReport = []; var reportRows = report.rows(); // Calculating avg quality score and adding stats while (reportRows.hasNext()) { var keywordReport = reportRows.next(); var oneAdgroupData = []; var impressions = keywordReport.Impressions * 1; var clicks = keywordReport.Clicks * 1; var rowQS = keywordReport.QualityScore * keywordReport.Impressions; var conversions = keywordReport.ConvertedClicks * 1; // If iterator find that there are no data for adgroup, iterator creates them. if(adGroupReport[keywordReport.AdGroupId] == null) { adGroupIds.push(keywordReport.AdGroupId); adGroupReport[keywordReport.AdGroupId] = [keywordReport.CampaignName,keywordReport.AdGroupName,impressions,0,rowQS,clicks,conversions]; } else { adGroupReport[keywordReport.AdGroupId][2] += impressions; adGroupReport[keywordReport.AdGroupId][4] += rowQS; adGroupReport[keywordReport.AdGroupId][5] += clicks; adGroupReport[keywordReport.AdGroupId][6] += conversions; } if(keywordReport.QualityScore <= 6) { adGroupReport[keywordReport.AdGroupId][3] += 1; } } // Getting sheet and setting up header for report var sheet = spreadhsheet.getSheetByName("Data"); var header = [ "Název kampaně", "Název Sestavy", "Zobrazení", "CTR", "Počet konverzí", "Počet slov se špatným skóre", "Vážený průměr skóre kvality" ]; sheet.clearContents(); sheet.getRange(1, 1, 1, 7).setValues([header]); //Getting every adGroup and writting one adGroup per row for(i = 0; i < adGroupIds.length; i++) { sheet.appendRow([adGroupReport[adGroupIds[i]][0], adGroupReport[adGroupIds[i]][1], adGroupReport[adGroupIds[i]][2], adGroupReport[adGroupIds[i]][5] / adGroupReport[adGroupIds[i]][2] * 100, adGroupReport[adGroupIds[i]][6], adGroupReport[adGroupIds[i]][3], adGroupReport[adGroupIds[i]][4] / adGroupReport[adGroupIds[i]][2]]); } sheet.sort(3, false); var lastRow = sheet.getLastRow(); for(i = 2;i <= lastRow; i++) { var conditionFormats = sheet.getRange(i, 6).getValue(); if(conditionFormats >= 3) { sheet.getRange(i, 6).setBackground("#FFC2B2"); } else { sheet.getRange(i, 6).setBackground("#CCF5CC"); } } for(i = 2;i <= lastRow; i++) { var conditionFormats = sheet.getRange(i, 7).getValue(); if(conditionFormats < 7.5) { sheet.getRange(i, 7).setBackground("#FFC2B2"); } else { sheet.getRange(i, 7).setBackground("#CCF5CC"); } } } |
Jarda says
Ahoj Jakube,
díky za script. Dost nám to otevřelo oči!
Zdarec
Jarda
Jakub Kašparů says
Ahoj,
jsem rád, že skript pomůže.
Michaela says
Bolo by fajn skript aktualizovať po tom ako google zrušil konvertované kliknutia
Sam says
Ahoj, já po spuštění scriptu dostávám hlášku:
„Column ‚ConvertedClicks‘ is not valid for report type KEYWORDS_PERFORMANCE_REPORT. Double-check your SELECT clause. (line 18)“
Martin says
v riadku 19 vymaz „ConvertedClicks“
brano says
Ahoj.
Skusal som vlozit tento skrip do adwords, ale stale mi vyhadzue problem na line 12, ako keby som mal problem s url adresou spreadsheetu,skusal som aj nejake fora, ale nefunguje ani jeden, pritom som do miesta kde treba vlozit spreadsheet skopiroval adresu z google drive kde je ulozeny dany spreadsheet.
Nevies kde by mohol byt problem?
dakujem
Martin says
toto vyriesis ked nastavis danej tabulke nastavenia zdielania na upravovat
Loopka says
Si zlaticko! Diki moc za skript! convertedclicks som vsade vymenila za konverzie a ide to krasne. Este rozmyslam ze tam supnem cost.
Pozdrav z Londyna