L’API de Google Analytics proporciona accés a les dades dels informes de Google Analytics (GA), com ara pàgines vistes, sessions, font de trànsit i percentatge de rebots.
El documentació oficial de Google explica que es pot utilitzar per:
- Creeu taulers personalitzats per mostrar les dades de GA.
- Automatitzeu tasques complexes d’informes.
- Integració amb altres aplicacions.
Podeu accedir a la resposta de l’API mitjançant diversos mètodes diferents, com ara Java, PHP i JavaScript, però aquest article, en particular, se centrarà a accedir i exportar dades mitjançant Python.
Aquest article només tractarà alguns dels mètodes que es poden utilitzar per accedir a diferents subconjunts de dades mitjançant diferents mètriques i dimensions.
Espero escriure una guia de seguiment que explori diferents maneres d’analitzar, visualitzari combinar les dades.
Configuració de l’API
Creació d’un compte de servei de Google
El primer pas és crear un projecte o seleccionar-ne un Compte de servei de Google.
Un cop creat, el següent pas és seleccionar el + Crea un compte de servei botó.
A continuació, se us promocionarà per afegir alguns detalls com ara un nom, un identificador i una descripció.
Un cop creat el compte de servei, navegueu a CLAUS secció i afegiu una nova clau.
Això us demanarà que creeu i descarregueu una clau privada. En aquest cas, seleccioneu JSON i, a continuació, creeu i espereu que es baixi el fitxer.
Afegeix al compte de Google Analytics
També voldreu fer una còpia del correu electrònic que s’ha generat per al compte de servei, que es pot trobar a la pàgina principal del compte.
El següent pas és afegir aquest correu electrònic com a usuari a Google Analytics amb permisos d’analista.
Habilitació de l’API
El pas final i possiblement més important és assegurar-vos que heu activat l’accés a l’API. Per fer-ho, assegureu-vos que esteu al projecte correcte i seguiu aquest enllaç per habilitar l’accés.
A continuació, seguiu els passos per activar-lo quan es promocioni.
Això és necessari per accedir a l’API. Si us perdeu aquest pas, se us demanarà que el completeu quan executeu l’script per primera vegada.
Accés a l’API de Google Analytics amb Python
Ara tot està configurat al nostre compte de servei, podem començar a escriure l’script per exportar les dades.
Vaig triar Quaderns Jupyter per crear-ho, però també podeu utilitzar altres entorns de desenvolupadors integrats (IDE), inclosos PyCharm o VSCode.
Instal·lació de Biblioteques
El primer pas és instal·lar les biblioteques necessàries per executar la resta del codi.
Alguns són únics per a l’API d’anàlisi i d’altres són útils per a futures seccions del codi.
!pip install --upgrade google-api-python-client !pip3 install --upgrade oauth2client from apiclient.discovery import build from oauth2client.service_account import ServiceAccountCredentials !pip install connect !pip install functions import connect
Nota: quan utilitzeu pip en un quadern Jupyter, afegiu ! – si s’executa a la línia d’ordres o un altre IDE, el ! no és necessari.
Creació d’una compilació de serveis
El següent pas és configurar el nostre abast, que és l’enllaç d’autenticació de l’API d’anàlisi només de lectura.
A continuació, la descàrrega JSON dels secrets del client que es va generar en crear la clau privada. S’utilitza de manera similar a una clau API.
Per accedir fàcilment a aquest fitxer dins del vostre codi, assegureu-vos d’haver desat el fitxer JSON a la mateixa carpeta que el fitxer de codi. Aleshores, es pot cridar fàcilment amb la funció KEY_FILE_LOCATION.
Finalment, afegiu l’identificador de visualització del compte d’anàlisi amb el qual voleu accedir a les dades.
En conjunt, això es veurà com el següent. Farem referència a aquestes funcions al llarg del nostre codi.
SCOPES = ['https://www.googleapis.com/auth/analytics.readonly'] KEY_FILE_LOCATION = 'client_secrets.json' VIEW_ID = 'XXXXX'
Un cop hàgim afegit el nostre fitxer de clau privada, podem afegir-ho a la funció de credencials trucant al fitxer i configurant-lo mitjançant el pas ServiceAccountCredentials.
A continuació, configureu l’informe de compilació, trucant a l’API d’informes d’anàlisi V4 i les nostres credencials ja definides des de dalt.
credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION, SCOPES) service = build('analyticsreporting', 'v4', credentials=credentials)
Redacció de l’òrgan de sol·licitud
Un cop ho tenim tot configurat i definit, comença la veritable diversió.
Des de la compilació del servei API, hi ha la possibilitat de seleccionar els elements de la resposta a la qual volem accedir. Això s’anomena objecte ReportRequest i requereix com a mínim el següent:
- Un identificador de visualització vàlid per al camp viewId.
- Almenys una entrada vàlida al camp Intervals de dates.
- Almenys una entrada vàlida al camp de mètriques.
Veure ID
Com s’ha esmentat, hi ha algunes coses que calen durant aquesta etapa de creació, començant pel nostre viewId. Com ja hem definit anteriorment, només hem d’anomenar aquest nom de funció (VIEW_ID) en lloc d’afegir de nou l’ID de vista sencera.
Si volguéssiu recollir dades d’una vista d’anàlisi diferent en el futur, només haureu de canviar l’identificador al bloc de codi inicial en lloc de tots dos.
Interval de dates
A continuació, podem afegir l’interval de dates per a les dates per a les quals volem recollir les dades. Consisteix en una data d’inici i una data de finalització.
Hi ha un parell de maneres d’escriure això a la sol·licitud de compilació.
Podeu seleccionar dates definides, per exemple, entre dues dates, afegint la data en un format any-mes-data, ‘startDate’: ‘2022-10-27’, ‘endDate’: ‘2022-11-27’.
O bé, si voleu veure les dades dels darrers 30 dies, podeu definir la data d’inici com a “30daysAgo” i la data de finalització com a “avui”.
Mètriques i dimensions
El pas final de la trucada de resposta bàsica és establir les mètriques i les dimensions. Les mètriques són les mesures quantitatives de Google Analytics, com ara el recompte de sessions, la durada de la sessió i el percentatge de rebots.
Les dimensions són les característiques dels usuaris, les seves sessions i les seves accions. Per exemple, el camí de la pàgina, la font del trànsit i les paraules clau utilitzades.
Hi ha moltes mètriques i dimensions diferents a les quals es pot accedir. No els repassaré tots en aquest article, però tots es poden trobar juntament amb informació i atributs addicionals aquí.
Tot el que pugueu accedir a Google Analytics, podeu accedir a l’API. Això inclou les conversions d’objectius, els inicis i els valors, el dispositiu del navegador utilitzat per accedir al lloc web, la pàgina de destinació, el seguiment del camí de la segona pàgina i la cerca interna, la velocitat del lloc i les mètriques de públic.
Tant les mètriques com les dimensions s’afegeixen en un format de diccionari, utilitzant parells clau:valor. Per a les mètriques, la clau serà “expressió” seguida dels dos punts (:) i després el valor de la nostra mètrica, que tindrà un format específic.
Per exemple, si volguéssim obtenir un recompte de totes les sessions, afegiríem “expressió”: “ga:sessions”. O ‘expression’: ‘ga:newUsers’ si volíem veure un recompte de tots els usuaris nous.
Amb dimensions, la clau serà “nom” seguida dels dos punts de nou i el valor de la dimensió. Per exemple, si volguéssim extreure els diferents camins de la pàgina, seria ‘name’: ‘ga:pagePath’.
O “nom”: “ga:medium” per veure les diferents fonts de trànsit referències al lloc.
Combinació de dimensions i mètriques
El valor real està en combinar mètriques i dimensions per extreure les estadístiques clau que ens interessen més.
Per exemple, per veure un recompte de totes les sessions que s’han creat a partir de diferents fonts de trànsit, podem establir que la nostra mètrica sigui ga:sessions i la nostra dimensió sigui ga:medium.
response = service.reports().batchGet( body={ 'reportRequests': [ { 'viewId': VIEW_ID, 'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}], 'metrics': [{'expression': 'ga:sessions'}], 'dimensions': [{'name': 'ga:medium'}] }] } ).execute()
Creació d’un DataFrame
La resposta que obtenim de l’API és en forma de diccionari, amb totes les dades en parells clau:valor. Per facilitar la visualització i l’anàlisi de les dades, les podem convertir en un marc de dades Pandas.
Per convertir la nostra resposta en un marc de dades, primer hem de crear algunes llistes buides, per contenir les mètriques i dimensions.
Aleshores, cridant a la sortida de la resposta, afegirem les dades de les dimensions a la llista de dimensions buida i un recompte de les mètriques a la llista de mètriques.
Això extreu les dades i les afegirà a les nostres llistes anteriorment buides.
dim = [] metric = [] for report in response.get('reports', []): columnHeader = report.get('columnHeader', {}) dimensionHeaders = columnHeader.get('dimensions', []) metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', []) rows = report.get('data', {}).get('rows', []) for row in rows: dimensions = row.get('dimensions', []) dateRangeValues = row.get('metrics', []) for header, dimension in zip(dimensionHeaders, dimensions): dim.append(dimension) for i, values in enumerate(dateRangeValues): for metricHeader, value in zip(metricHeaders, values.get('values')): metric.append(int(value))
Afegint les dades de resposta
Un cop les dades es troben a aquestes llistes, les podem convertir fàcilment en un marc de dades definint els noms de les columnes, entre claudàtors, i assignant els valors de la llista a cada columna.
df = pd.DataFrame() df["Sessions"]= metric df["Medium"]= dim df= df[["Medium","Sessions"]] df.head()
Més exemples de sol·licituds de resposta
Múltiples mètriques
També hi ha la possibilitat de combinar múltiples mètriques, amb cada parell afegit entre claudàtors i separats per una coma.
'metrics': [ {"expression": "ga:pageviews"}, {"expression": "ga:sessions"} ]
Filtrat
També podeu sol·licitar que la resposta de l’API només retorni mètriques que retornin determinats criteris afegint filtres de mètriques. Utilitza el següent format:
if {metricName} {operator} {comparisonValue} return the metric
Per exemple, si només voleu extreure pàgines vistes amb més de deu visualitzacions.
response = service.reports().batchGet( body={ 'reportRequests': [ { 'viewId': VIEW_ID, 'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}], 'metrics': [{'expression': 'ga:pageviews'}], 'dimensions': [{'name': 'ga:pagePath'}], "metricFilterClauses": [{ "filters": [{ "metricName": "ga:pageviews", "operator": "GREATER_THAN", "comparisonValue": "10" }] }] }] } ).execute()
Els filtres també funcionen per a dimensions de manera similar, però les expressions de filtre seran lleugerament diferents a causa de la naturalesa característica de les dimensions.
Per exemple, si només voleu extreure pàgines vistes d’usuaris que han visitat el lloc amb el navegador Chrome, podeu configurar un operador EXTRACT i utilitzar “Chrome” com a expressió.
response = service.reports().batchGet( body={ 'reportRequests': [ { 'viewId': VIEW_ID, 'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}], 'metrics': [{'expression': 'ga:pageviews'}], "dimensions": [{"name": "ga:browser"}], "dimensionFilterClauses": [ { "filters": [ { "dimensionName": "ga:browser", "operator": "EXACT", "expressions": ["Chrome"] } ] } ] } ] } ).execute()
Expressions
Com que les mètriques són mesures quantitatives, també hi ha la possibilitat d’escriure expressions, que funcionen de manera similar a les mètriques calculades.
Això implica definir un àlies per representar l’expressió i completar una funció matemàtica en dues mètriques.
Per exemple, podeu calcular les finalitzacions per usuari dividint el nombre de finalitzacions pel nombre d’usuaris.
response = service.reports().batchGet( body={ 'reportRequests': [ { 'viewId': VIEW_ID, 'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}], "metrics": [ { "expression": "ga:goal1completions/ga:users", "alias": "completions per user" } ] } ] } ).execute()
Histogrames
L’API també us permet agrupar dimensions amb un valor enter (numèric) en intervals mitjançant dipòsits d’histogrames.
Per exemple, agrupant la dimensió del recompte de sessions en quatre grups d’1-9, 10-99, 100-199 i 200-399, podeu utilitzar el tipus d’ordre HISTOGRAM_BUCKET i definir els intervals als histogramBuckets.
response = service.reports().batchGet( body={ 'reportRequests': [ { 'viewId': VIEW_ID, 'dateRanges': [{'startDate': '30daysAgo', 'endDate': 'today'}], "metrics": [{"expression": "ga:sessions"}], "dimensions": [ { "name": "ga:sessionCount", "histogramBuckets": ["1","10","100","200","400"] } ], "orderBys": [ { "fieldName": "ga:sessionCount", "orderType": "HISTOGRAM_BUCKET" } ] } ] } ).execute()
En conclusió
Espero que això us hagi proporcionat una guia bàsica per accedir a l’API de Google Analytics, escriure algunes sol·licituds diferents i recopilar informació significativa en un format fàcil de veure.
He afegit el codi de compilació i sol·licitud, i els fragments compartits aquest fitxer GitHub.
M’encantarà saber si proveu algun d’aquests i els vostres plans per explorar més les dades.
Més recursos:
Imatge destacada: BestForBest/Shutterstock