Skip to content

Instantly share code, notes, and snippets.

@tzangms
Last active August 29, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tzangms/89bba478fe1489723978 to your computer and use it in GitHub Desktop.
Save tzangms/89bba478fe1489723978 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
"""
This script can retrieve pageviews count by month and export to a CSV file
Usage:
>> python pv.py 2013 <input.csv> <output-csv>
"""
import sys
import csv
import calendar
from gdata.analytics.client import AnalyticsClient
import gdata
def ga_pageview(client, view_id, path, start_date, end_date):
data_query = gdata.analytics.client.DataFeedQuery({
'ids': view_id,
'dimensions': '', # ga:source,ga:medium
'metrics': 'ga:pageviews',
'filters': 'ga:pagePath%s' % path,
'start-date': start_date,
'end-date': end_date,
})
feed = client.GetDataFeed(data_query)
try:
pageview = feed.entry[0].metric[0].value
except IndexError:
pageview = 0
return pageview
SOURCE_APP_NAME = '<your-google-app-name>'
GA_VIEW_ID = 'ga:XXXXXXX' # example: ga:1111111
client = AnalyticsClient(source=SOURCE_APP_NAME)
client.client_login(
'<your-google-username>',
'<your-google-password>',
source=SOURCE_APP_NAME,
service=client.auth_service,
account_type = 'GOOGLE',
)
data = csv.reader(open(input_csv, "rb"))
output = csv.writer(open(output_csv, "wb"))
for name, username in data:
username = username.strip()
print name, username
pageviews = []
for month in range(1, 13):
last_day = calendar.monthrange(year, month)[1]
start_date = "%d-%02d-%02d" % (year, month, 1)
end_date = "%d-%02d-%02d" % (year, month, last_day)
pageview = ga_pageview(client, GA_VIEW_ID, '=~/.*/%s/' % username, start_date, end_date)
pageviews.append(pageview)
pageviews.insert(0, year)
label = "%s, %s" % (name, username)
output.writerow([label])
output.writerow(pageviews)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment