So greifen Sie über Python auf die Google Analytics-API zu

Die Google Analytics-API bietet Zugriff auf Google Analytics (GA)-Berichtsdaten wie Seitenaufrufe, Sitzungen, Verkehrsquelle und Absprungrate.

Die offizielle Google-Dokumentation erklärt, dass es verwendet werden kann, um:

  • Erstellen Sie benutzerdefinierte Dashboards, um GA-Daten anzuzeigen.
  • Automatisieren Sie komplexe Berichtsaufgaben.
  • Integration mit anderen Anwendungen.

Sie können mit verschiedenen Methoden auf die API-Antwort zugreifen, darunter Java, PHP und JavaScript, aber dieser Artikel konzentriert sich insbesondere auf den Zugriff auf und den Export von Daten mit Python.

In diesem Artikel werden nur einige der Methoden behandelt, die verwendet werden können, um mithilfe verschiedener Metriken und Dimensionen auf verschiedene Teilmengen von Daten zuzugreifen.

Ich hoffe, einen Folgeleitfaden schreiben zu können, in dem verschiedene Möglichkeiten untersucht werden, wie Sie die Daten analysieren, visualisieren und kombinieren können.

Einrichten der API

Erstellen eines Google-Dienstkontos

Der erste Schritt besteht darin, ein Projekt zu erstellen oder eines in Ihrem Google-Dienstkonto auszuwählen.

Nachdem diese erstellt wurde, ist der nächste Schritt die Auswahl der + Dienstkonto erstellen Knopf.

Screenshot von Google Cloud, Dezember 2022

Sie werden dann aufgefordert, einige Details wie Name, ID und Beschreibung hinzuzufügen.

DienstkontodetailsScreenshot von Google Cloud, Dezember 2022

Navigieren Sie nach dem Erstellen des Dienstkontos zu SCHLÜSSEL Abschnitt und fügen Sie einen neuen Schlüssel hinzu.

DienstkontoschlüsselScreenshot von Google Cloud, Dezember 2022

Dies fordert Sie auf, einen privaten Schlüssel zu erstellen und herunterzuladen. Wählen Sie in diesem Fall JSON aus, erstellen Sie die Datei und warten Sie, bis sie heruntergeladen wurde.

JSON-AnmeldeinformationsschlüsselScreenshot von Google Cloud, Dezember 2022

Zum Google Analytics-Konto hinzufügen

Sie sollten auch eine Kopie der E-Mail mitnehmen, die für das Dienstkonto generiert wurde – diese finden Sie auf der Hauptkontoseite.

E-Mail-Adresse des Google-KontosScreenshot von Google Cloud, Dezember 2022

Der nächste Schritt besteht darin, diese E-Mail-Adresse als Benutzer in Google Analytics mit Analystenberechtigungen hinzuzufügen.

E-Mail in Google AnalyticsScreenshot aus Google Analytics, Dezember 2022

Aktivieren der API

Der letzte und wohl wichtigste Schritt besteht darin, sicherzustellen, dass Sie den Zugriff auf die API aktiviert haben. Stellen Sie dazu sicher, dass Sie sich im richtigen Projekt befinden, und folgen Sie diesem Link, um den Zugriff zu aktivieren.

Befolgen Sie dann die Schritte, um es zu aktivieren, wenn es befördert wird.

Aktivieren der APIScreenshot von Google Cloud, Dezember 2022

Dies ist erforderlich, um auf die API zuzugreifen. Wenn Sie diesen Schritt auslassen, werden Sie beim ersten Ausführen des Skripts aufgefordert, ihn abzuschließen.

Zugriff auf die Google Analytics-API mit Python

Jetzt ist alles in unserem Dienstkonto eingerichtet, wir können mit dem Schreiben des Skripts zum Exportieren der Daten beginnen.

Ich habe Jupyter Notebooks ausgewählt, um dies zu erstellen, aber Sie können auch andere integrierte Entwicklerumgebungen (IDEs) verwenden, einschließlich PyCharm oder VSCode.

Bibliotheken installieren

Der erste Schritt besteht darin, die Bibliotheken zu installieren, die zum Ausführen des restlichen Codes erforderlich sind.

Einige sind einzigartig für die Analyse-API, andere sind für zukünftige Abschnitte des Codes nützlich.

!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

Hinweis: Wenn Sie pip in einem Jupyter-Notebook verwenden, fügen Sie das ! – Wenn es in der Befehlszeile oder einer anderen IDE ausgeführt wird, wird das ! wird nicht benötigt.

Erstellen eines Service-Builds

Der nächste Schritt besteht darin, unseren Bereich einzurichten, bei dem es sich um den schreibgeschützten Analytics-API-Authentifizierungslink handelt.

Darauf folgt der JSON-Download der Client-Secrets, der beim Erstellen des privaten Schlüssels generiert wurde. Dies wird ähnlich wie ein API-Schlüssel verwendet.

Um einfach auf diese Datei in Ihrem Code zuzugreifen, stellen Sie sicher, dass Sie die JSON-Datei im selben Ordner wie die Codedatei gespeichert haben. Diese kann dann einfach mit der Funktion KEY_FILE_LOCATION aufgerufen werden.

Fügen Sie abschließend die Ansichts-ID aus dem Analytics-Konto hinzu, mit dem Sie auf die Daten zugreifen möchten.

Google Analytics-Ansichts-IDScreenshot vom Autor, Dezember 2022

Insgesamt wird dies wie folgt aussehen. Wir werden diese Funktionen im gesamten Code referenzieren.

SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
KEY_FILE_LOCATION = 'client_secrets.json'
VIEW_ID = 'XXXXX'

Nachdem wir unsere private Schlüsseldatei hinzugefügt haben, können wir diese der Anmeldeinformationsfunktion hinzufügen, indem wir die Datei aufrufen und über den Schritt „ServiceAccountCredentials“ einrichten.

Richten Sie dann den Build-Bericht ein, indem Sie die Analytics-Berichterstellungs-API V4 und unsere bereits definierten Anmeldeinformationen von oben aufrufen.

credentials = ServiceAccountCredentials.from_json_keyfile_name(KEY_FILE_LOCATION, SCOPES)
service = build('analyticsreporting', 'v4', credentials=credentials)

Schreiben des Anforderungstexts

Sobald wir alles eingerichtet und definiert haben, beginnt der eigentliche Spaß.

Aus dem API-Service-Build besteht die Möglichkeit, die Elemente aus der Antwort auszuwählen, auf die wir zugreifen möchten. Dies wird als ReportRequest-Objekt bezeichnet und erfordert mindestens Folgendes:

  • Eine gültige Ansichts-ID für das viewId-Feld.
  • Mindestens ein gültiger Eintrag im Feld dateRanges.
  • Mindestens ein gültiger Eintrag im Metrikfeld.

ID anzeigen

Wie bereits erwähnt, sind während dieser Erstellungsphase einige Dinge erforderlich, beginnend mit unserer viewId. Wie wir bereits zuvor definiert haben, müssen wir nur diesen Funktionsnamen (VIEW_ID) aufrufen, anstatt die gesamte Ansichts-ID erneut hinzuzufügen.

Wenn Sie in Zukunft Daten aus einer anderen Analyseansicht sammeln möchten, müssen Sie nur die ID im ersten Codeblock ändern und nicht beide.

Datumsbereich

Dann können wir den Datumsbereich für die Daten hinzufügen, für die wir die Daten sammeln möchten. Diese besteht aus einem Startdatum und einem Enddatum.

Es gibt mehrere Möglichkeiten, dies in die Build-Anfrage zu schreiben.

Sie können definierte Daten auswählen, z. B. zwischen zwei Datumsangaben, indem Sie das Datum im Format Jahr-Monat-Datum hinzufügen, ‘startDate’: ‘2022-10-27’, ‘endDate’: ‘2022-11-27’.

Oder, wenn Sie Daten der letzten 30 Tage anzeigen möchten, können Sie das Startdatum auf „vor 30 Tagen“ und das Enddatum auf „heute“ festlegen.

Metriken und Dimensionen

Der letzte Schritt des Basic-Response-Calls ist das Festlegen der Metriken und Dimensionen. Metriken sind die quantitativen Messungen von Google Analytics, wie z. B. Sitzungsanzahl, Sitzungsdauer und Absprungrate.

Dimensionen sind die Merkmale von Benutzern, ihren Sitzungen und ihren Aktionen. Beispielsweise Seitenpfad, Verkehrsquelle und verwendete Schlüsselwörter.

Es gibt viele verschiedene Metriken und Dimensionen, auf die zugegriffen werden kann. Ich werde sie in diesem Artikel nicht alle durchgehen, aber sie können alle zusammen mit zusätzlichen Informationen und Attributen hier gefunden werden.

Alles, auf das Sie in Google Analytics zugreifen können, können Sie auch in der API abrufen. Dazu gehören Ziel-Conversions, Starts und Werte, das für den Zugriff auf die Website verwendete Browsergerät, die Zielseite, die Verfolgung des Pfads der zweiten Seite und die interne Suche, die Websitegeschwindigkeit und Zielgruppenmetriken.

Sowohl die Metriken als auch die Dimensionen werden in einem Wörterbuchformat unter Verwendung von Schlüssel/Wert-Paaren hinzugefügt. Für Metriken ist der Schlüssel „Ausdruck“, gefolgt vom Doppelpunkt (:) und dann dem Wert unserer Metrik, der ein bestimmtes Format hat.

Wenn wir beispielsweise alle Sitzungen zählen möchten, würden wir „Ausdruck“ hinzufügen: „ga:sessions“. Oder ‘expression’: ‘ga:newUsers’, wenn wir die Anzahl aller neuen Benutzer sehen wollten.

Bei Dimensionen ist der Schlüssel „Name“, gefolgt von einem Doppelpunkt und dem Wert der Dimension. Wenn wir beispielsweise die verschiedenen Seitenpfade extrahieren wollten, wäre dies „name“: „ga:pagePath“.

Oder ‘Name’: ‘ga:medium’, um die Verweise der verschiedenen Verkehrsquellen auf die Website anzuzeigen.

Kombinieren von Dimensionen und Metriken

Der wahre Wert liegt in der Kombination von Metriken und Dimensionen, um die wichtigsten Erkenntnisse zu extrahieren, an denen wir am meisten interessiert sind.

Um beispielsweise eine Anzahl aller Sitzungen anzuzeigen, die aus verschiedenen Verkehrsquellen erstellt wurden, können wir unsere Metrik auf ga:sessions und unsere Dimension auf ga:medium festlegen.

response = service.reports().batchGet(
    body=
        'reportRequests': [
        
          'viewId': VIEW_ID,
          'dateRanges': ['startDate': '30daysAgo', 'endDate': 'today'],
          'metrics': ['expression': 'ga:sessions'],
          'dimensions': ['name': 'ga:medium']
        ]
      
  ).execute()

Erstellen eines Datenrahmens

Die Antwort, die wir von der API erhalten, hat die Form eines Wörterbuchs mit allen Daten in Schlüssel:Wert-Paaren. Um die Daten einfacher anzuzeigen und zu analysieren, können wir sie in einen Pandas-Datenrahmen umwandeln.

Um unsere Antwort in einen Datenrahmen umzuwandeln, müssen wir zunächst einige leere Listen erstellen, um die Metriken und Dimensionen aufzunehmen.

Dann fügen wir beim Aufrufen der Antwortausgabe die Daten aus den Dimensionen in die leere Dimensionsliste und eine Anzahl der Metriken in die Metrikliste ein.

Dadurch werden die Daten extrahiert und zu unseren zuvor leeren Listen hinzugefügt.

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))

Hinzufügen der Antwortdaten

Sobald sich die Daten in diesen Listen befinden, können wir sie leicht in einen Datenrahmen umwandeln, indem wir die Spaltennamen in eckigen Klammern definieren und jeder Spalte die Listenwerte zuweisen.

df = pd.DataFrame()
df["Sessions"]= metric
df["Medium"]= dim
df= df[["Medium","Sessions"]]
df.head()

DataFrame-Beispiel 

Weitere Beispiele für Antwortanfragen

Mehrere Metriken

Es besteht auch die Möglichkeit, mehrere Metriken zu kombinieren, wobei jedes Paar in geschweiften Klammern hinzugefügt und durch ein Komma getrennt wird.

'metrics': [
              "expression": "ga:pageviews",
              "expression": "ga:sessions"
          ]

Filtern

Sie können auch anfordern, dass die API-Antwort nur Metriken zurückgibt, die bestimmte Kriterien zurückgeben, indem Sie Metrikfilter hinzufügen. Es verwendet das folgende Format:

if metricName operator comparisonValue
   return the metric

Zum Beispiel, wenn Sie nur Seitenaufrufe mit mehr als zehn Aufrufen extrahieren wollten.

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()

Filter funktionieren auf ähnliche Weise auch für Dimensionen, aber die Filterausdrücke unterscheiden sich aufgrund der charakteristischen Natur von Dimensionen geringfügig.

Wenn Sie beispielsweise nur Seitenaufrufe von Benutzern extrahieren möchten, die die Website mit dem Chrome-Browser besucht haben, können Sie einen EXTRACT-Operator festlegen und „Chrome“ als Ausdruck verwenden.

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()

Ausdrücke

Da Metriken quantitative Maße sind, besteht auch die Möglichkeit, Ausdrücke zu schreiben, die ähnlich wie berechnete Metriken funktionieren.

Dazu gehört die Definition eines Alias ​​zur Darstellung des Ausdrucks und die Vervollständigung einer mathematischen Funktion auf zwei Metriken.

Beispielsweise können Sie die Abschlüsse pro Benutzer berechnen, indem Sie die Anzahl der Abschlüsse durch die Anzahl der Benutzer dividieren.

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()

Histogramme

Die API ermöglicht es Ihnen auch, Dimensionen mit einem ganzzahligen (numerischen) Wert mithilfe von Histogramm-Buckets in Bereiche einzuteilen.

Wenn Sie beispielsweise die Dimension der Sitzungsanzahl in vier Buckets von 1–9, 10–99, 100–199 und 200–399 aufteilen, können Sie den Auftragstyp HISTOGRAM_BUCKET verwenden und die Bereiche in histogramBuckets definieren.

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()
Beispiel für ein Histogramm Screenshot vom Autor, Dezember 2022

Abschließend

Ich hoffe, dies hat Ihnen eine grundlegende Anleitung für den Zugriff auf die Google Analytics-API, das Schreiben einiger verschiedener Anfragen und das Sammeln einiger aussagekräftiger Erkenntnisse in einem einfach anzuzeigenden Format gegeben.

Ich habe den Build- und Anforderungscode sowie die in dieser GitHub-Datei geteilten Snippets hinzugefügt.

Ich würde gerne hören, ob Sie eines davon ausprobieren und welche Pläne Sie haben, die Daten weiter zu untersuchen.

Mehr Ressourcen:


Beitragsbild: BestForBest/Shutterstock


source site

Leave a Reply