Co skript dělá:
- Načítá aktuální dotazy z Google Adwords, na které se zobrazujete.
- Zároveň načítá organické vyhledávací dotazy, které porovnává s reportem z Google Anaylytics.
- Dotazy, které nemáte v kampaní, Vám zapíše do sešitu, včetně vstupní stránky dotazu.
Jak nasadit:
- Na řádek 2 vložte ID Vašeho profilu v Google Analytics, které najdete v sekci v Google Analytics > Správce > Nastavení výběru dat > ID výběru dat – příkladem 1223542
- Na řádek 3 zkopírujte URL nového sešitu na Google Disku – příkladem „url sešitu“
- Na řádek 4 vložte do uvozovek kořen domény – příkladem „http://mujweb.cz“
- Jakmile skript vložíte do Adwords, je nutné povolit pokročilá rozhraní a API Google Analytics.
- Následně ještě povolit Google Analytics API v rámci Developer Console.
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 |
//VARIABLESS// var ANALYTICS_ID = 12456; // Vložte GA ID profilu var SPREADSHEET_URL = ""; // Vložte URL sešitu var YourDomain = ""; // Vložte URL domény function main () { var spreadsheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL); spreadsheet.setSpreadsheetLocale("en"); var dataSheet = createOrGetSheet(spreadsheet,"Data",0); var lPreport = createOrGetSheet(spreadsheet,"Vstupní stránky",1); if(dataSheet.getRange("A1").isBlank() == true) { dataSheet.getRange("A1:C1").setValues([["Klíčové slovo","Vstupní stránka","Návštěvy GA"]]); dataSheet.deleteColumns(4,20); } else { dataSheet.getRange(2,1,dataSheet.getLastRow(),3).clear(); } var forTotalResultNum = runReport(ANALYTICS_ID,1).totalResults; var adwordsData = adwReportObject(); for(i=1;i< forTotalResultNum;i = i + 1000) { var data = runReport(ANALYTICS_ID,i); for(a=0; a < data['rows'].length; a++) { var kw = data['rows'][a][1]; if(kw == "(not provided)") { continue; } var sessions = data['rows'][a][3]; var landingPage = YourDomain + data['rows'][a][2]; if(adwordsData[kw] == undefined && adwordsData[kw] != "(not provided)") { dataSheet.appendRow([kw,landingPage,sessions]); } } } var formula = lPreport.getRange("A10"); formula.setFormula('=QUERY(Data!A:C,"select B,count(A),sum(C) group by B order by sum(C)desc")'); } function adwReportObject() { var AdwordsData = {}; var report = AdWordsApp.report( " SELECT Query, KeywordTextMatchingQuery, CampaignName, AdGroupName, Impressions, Clicks, AverageCpc, Ctr, Cost, AllConversions, CostPerAllConversion, AllConversionValue" + " FROM SEARCH_QUERY_PERFORMANCE_REPORT"+ " WHERE Impressions > 10"+ " AND AdGroupStatus = ENABLED" + " AND CampaignStatus = ENABLED" + " DURING LAST_30_DAYS"); var data = report.rows(); while(data.hasNext()) { var row = data.next(); var query = row.Query; AdwordsData[query] = row; } return AdwordsData; } function runReport(profileId,paging) { var today = new Date(); var oneWeekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000); var startDate = Utilities.formatDate(oneWeekAgo, "GTM - 1", 'yyyy-MM-dd'); var endDate = Utilities.formatDate(today, "GTM - 1", 'yyyy-MM-dd'); var tableId = 'ga:' + profileId; var metric = 'ga:visits'; var options = { 'dimensions': 'ga:source,ga:keyword,ga:landingPagePath', 'sort': '-ga:visits,ga:source', 'filters': 'ga:medium==organic', 'start-index': paging }; var report = Analytics.Data.Ga.get(tableId, startDate, endDate, metric, options); return report; } function createOrGetSheet(reportSpreadsheet, name, position) { var sheet = reportSpreadsheet.getSheetByName(name); if(sheet == null) { return reportSpreadsheet.insertSheet(name,position); } else { return sheet; } } |
Klaudie says
Ahoj, moc ráda bych script zkusila, ale vůbec si nevím rady s body „Jakmile skript vložíte do Adwords, je nutné povolit pokročilá rozhraní a API Google Analytics.“ a „Následně ještě povolit Google Analytics API v rámci Developer Console.“
Myslíš, že bys mohl popsat, kde tyto možnosti najít a co všechno a jak nastavit?
Díky moc za opověď.
Jakub Kašparů says
Přidal jsem youtube video s návodem 🙂
Klaudie says
Boží! Díky
Tomáš Kapler says
v titulku by místo jednoho z těch tří „z“ mělo být asi jedno „s“ 🙂
Jakub Kašparů says
Pravda, děkuji za komentář 🙂
Honza says
Dobrý den,
udělal jsem vše podle videa, v adwords mi ale vyjela chyba :
Náhled byl dokončen s chybami. Podrobnosti naleznete v protokolech. (00:21)
Klaudie says
Jakou chybu protokoly ukazují? Často to nechce projít, pokud je script spouštěn z jiného účtu, než na kterém se nachází sheet.
Honza says
Díky za pomoc. Stav: Nedokončeno: Chyba uživatele
Honza says
Stejný problém – adwords účet i sešit jsou na jednom účtu.
Michal Královič says
Ahojte,
@Jakub – nebolo by výhodnejšie načítať data o kľúčových slovách, vyhľadávaniach a vstupnej stránke zo Search Console? Nakoľko v Google Analytics sa zobrazuje len malé percento týchto slov a väčšina spadá do not provided?
vďaka
Jakub Kašparů says
Ahoj, bylo ale API Search Console není integrované do appscriptů a bylo by to o dost náročnější 🙂
Danča says
jj přesně, to by bylo rozhodně lepší pracovat se Search consolí, takhle u mě 99,11 % klíčových slov se to vůbec netýká, kvůli tomu 1 % to nemá moc smysl ani nastavovat.. Nepřemýšlíš Jakube přeci jen o té náročnější verzi? to by bylo super, protože nápad je to víc než zajímavý. díky Danča
Ondřej says
Ahojte, hází mně to takový problém: Access Not Configured. Google Analytics API has not been used in project 424855998226 before or it is disabled.
I když jsem povolil Analytics API, tak žádná změna. Nevíte co s tím?
Vláďa Smitka says
Zkuste ještě povolit Analytics Reporting API, jestli to pomůže – https://console.developers.google.com/apis/api/analyticsreporting.googleapis.com/overview
Robert says
Ahoj, prosím o pomoc. Mám stejný problém jako Honza. Píše mi to:
Náhled byl dokončen s chybami. Podrobnosti naleznete v protokolech.
v protokolech je napsáno:
User does not have sufficient permissions for this profile. (line 51)
Jsem přihlášen přes MCC na účtě, na kterém script jede. Nevíte, co je špatně?
Díky moc.
Jakub Kašparů says
Podle mě Google Analytics účet provozujete na jiném emailu než Google Adwords, díky tomu, se tam skript nemůže dostat. Adwords i Analytics musí být na stejném účtu.
Robert says
Děkuji za odpověď, nasdílel jsem si GA na svůj Adwords účet a už to jede.
Robert says
Ještě jeden dotaz: Pokud nastavím spouštění skriptu např. na každý den, budou se mi předešlé vyhledávací dotazy smazávat, tzn. budu tam mít pouze vyhledávací dotazy, na které byly reklamy spuštěny předešlých 24 hodin, nebo tam staré vyhledávací dotazy zůstávají? Jen přemýšlím, jak často je nejlepší nechat skript spouštět.
Ondra says
Sheet se vždy přemaže (if na řádcích 11 – 16), a bere data za posledních 30 dní (řádek 24), nejvhodnější tedy bude spouštět ho každý měsíc. Bylo by možné spouštět ho týdně (přepsat řádek 24 na LAST_7_DAYS), případně i denně a exportovat každý den do nového listu, případně do několika a točit dokola (pondělí – neděle). Otázkou je velikost účtu a jestli se taková frekvence vyplatí.
Robert says
Supr, díky za odpověď. Nejlepší bude asi to týdenní spouštění, pokud chci účet aktivně optimalizovat.
Pavel Trojánek says
Invalid reporting query: SEARCH_QUERY_PERFORMANCE_REPORT. (line 21)
Kde může být chyba v tomto případě? (Vše nastaveno podle YouTube návodu a vše běží na stejných emailových účtech. Díky. 🙂
Jan says
Pavle, jak jste to vyřešil?
Robert Macků says
Ahoj,
změnili teď přístup do Analytics API, už nelze prokliknout na enable, je zde možnost pouze try this API, dále pod tím píší: IAM: you have insufficient permissions to enable or disable services and APIs for this project. Contact a project owner to request permissions.
Nevíš, co s tím? Kde mohu povolit nyní Analytics API? Nebo jsou scripty potřebující Analytics API nyní nepoužitelné bez vyšších oprávnění.
Díky,
Robert
Jan says
Invalid reporting query: SEARCH_QUERY_PERFORMANCE_REPORT. (file Code.gs, line 21)
Stejný problém. 🙁