Gaapi 0.1.5
=================================
A light weight python wrapper for `Google's Analytics Reporting API v4 `_ written upon Google API Python Client.
Features provided by Gaapi
---------------------------
- Analytics focussed library to handle reporting api.
- Pythonic style usage.
- Enables you to cache your response data.
- Enables you to get simplified response data. (TO-DO)
------------
Installation
---------------
To install, simply use pip or easy_install::
$ pip install --upgrade gaapi
or::
$ easy_install --upgrade gaapi
------------
Acquire Google credentials
--------------------------
**1. To create a Service Account Credentials, follow the below link**
https://support.google.com/a/answer/7378726?hl=en
**2. Get view ID in Google Analytics, follow the below link**
https://keyword-hero.com/documentation/finding-your-view-id-in-google-analytics
------------
Get Started
-----------
Instanstiate GA Client
''''''''''''''''''''''''
::
from gaapi import Client
GA_SERVICE_ACCOUNT_CREDENTIALS = {
"type": "service_account",
"project_id": "analytics-xyz",
"private_key_id": "private_key_id",
"private_key": "-----BEGIN PRIVATE KEY-----ASADASDONWQENLKQWEIL\nASDASDOILWQE",
"client_email": "username@analytics-xyz.iam.gserviceaccount.com",
"client_id": "103486406559549721528",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/username@analytics-xyz.iam.gserviceaccount.com"
}
GA_VIEW_ID = '12345567890'
ga = Client(
credentials=GA_SERVICE_ACCOUNT_CREDENTIALS,
view_id=GA_VIEW_ID
)
Generate Query
''''''''''''''
Gaapi format::
query = ga.query.date_ranges(
start_date='2018-07-03', end_date='today'
).metrics(
expression='ga:users'
).dimensions(
name='ga:pagePath'
).dimensions(
name='ga:eventLabel'
).dimension_filter_clauses(
filters=[{
"dimension_name": "ga:pagePath",
"operator": "REGEXP",
"expressions": ".*something.*"
}],
)
# Clone query (Only for Gaapi format)
# Add `clean=True` to reset a value in the query (say date_ranges)
cloned_query = ga.query.clone(query2).date_ranges(
start_date='2018-08-01', end_date='today', clean=True
)
# Read query
print(query.json())
Python Dictionary format::
query = {
'date_ranges': {
'start_date': '2018-07-03',
'end_date': 'today'
},
'metrics': [
{'expression': 'ga:users'}
],
'dimensions': [
{'name': 'ga:pagePath'}
],
'dimension_filter_clauses': [{
"filters": [{
"dimension_name": "ga:pagePath",
"operator": "REGEXP",
"expressions": "\/.*something\/.*"
}]
}]
}
Google's original query format::
query = {
'dateRanges': {
'startDate': '2018-07-03',
'endDate': 'today'
},
'metrics': [
{'expression': 'ga:users'}
],
'dimensions': [
{'name': 'ga:pagePath'}
],
'dimensionFilterClauses': [{
"filters": [{
"dimensionName": "ga:pagePath",
"operator": "REGEXP",
"expressions": "\/.*something\/.*"
}]
}]
}
Request Data
''''''''''''
::
# Using gaapi query or python dictionary or json
response = ga.batch_get(query)
# Cache for 600ms
response = ga.batch_get(query, cache_ttl=600)
------------
Third Party Libraries and Dependencies
--------------------------------------
The following external libraries will be installed when you install gaapi ...
- `google-api-python-client `_
- `google-auth `_
- `walrus `_
To-Dos
------
- Response Object Manipulation. (This update will enable to you to generate response in Google Raw Response, Simplified Response, CSV, Panda Dataframe).
- Test cases.
Contribute
----------
1. Look for an open `issue `_ or create new issue to get a dialog going about the new feature or bug that you've discovered.
2. Fork the `repository `_ on Github to start making your changes to the master branch (or branch off of it).
3. Write a test which shows that the bug was fixed or that the feature works as expected.
4. Make a pull request.