Přejít na obsah
PPC Scripts

Nové možnosti reportingu v rámci Adwords skriptů Adwords API v201601

13 komentářů

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:

  1. FirstPositionCpc – simulace potřebné nabídky pro 1. pozici daného klíčového slova.
  2. EstimatedAddClicksAtFirstPositionCpc – kolik prokliků získám navíc na 1. pozici.
  3. EstimatedAddCostAtFirstPositionCpc – o kolik víc zaplatím za prokliky na 1. pozici.
  4. CreativeQualityScore – jak hodnotí Adwords relevanci reklamy daného klíčového slova.
    1. Not applicable – neví.
    2. Below average – podprůměrná.
    3. Average – průměrná.
    4. Above average – nadprůměrná.
  5. PostClickQualityScore – relevance vstupní stránky k Vašemu klíčovému slovu.
    1. Not applicable – neví.
    2. Below average – podprůměrná.
    3. Average – průměrná.
    4. Above average – nadprůměrná.
  6. SearchPredictedCtr – jak hodnotí Adwords Ctr Vašeho klíčového slova na dané pozici.
    1. Not applicable – neví.
    2. Below average – podprůměrná.
    3. Average – průměrná.
    4. 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

nove-metriky-a.gs
//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);
}
Jakub Kašparů

Spolumajitel PPC agentury Lynt. Píše na jakubkasparu.com.

jakubkasparu.com ↗LinkedIn ↗

Komentáře 13

  1. Martin Tomanek

    Perfektní skript! Díky

  2. Petr Slavík

    Děkuji za skript, hodně mi pomohl! A pomůže 😉

  3. Lukáš Kolovrat

    Také moc děkuji.
    Skvělá práce.

  4. David

    Zdravím, vyhodilo mi to chybu…niečo som zle nastavil? Dakujem
    Invalid reporting query: KEYWORDS_PERFORMANCE_REPORT. (line 20)

  5. Jakub

    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.

  6. Jan

    Absolutne stejny problem. Fixnul to nekdo? Prekopirovaval jsem to snad 10x, stejna chybova hlaska.

  7. Honza

    Jakube díky, funguje skvěle. Ve videu ukazuješ další listy – není tento někde ke stažení?

  8. Loopka

    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

  9. CRITICAL

    Tenhle skript nám moc pomohl. Díky!

  10. Matěj Konečný

    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

  11. Ľuboš Dubovec

    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ť ?

  12. webdesign studio designcrew

    Díky za inspiraci a návod. Určitě využijeme pro naše klienty.

  13. Lukáš Kolovrat

    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.