이전 포스팅에서 구글 애널리틱스 API 인증 토큰을 받았습니다. 구글 애널리틱스 API 이용하면 여러 가지 데이터를 쉽게 받고 분석할 수 있습니다. 파이썬을 이용하면 자동화도 가능합니다. 파이썬을 이용해서 구글 애널리틱스 API를 이용하는 방법을 알아보겠습니다.

 

 

1. Embed API

데이터를 제공받게 해서 위해서는 요청하는 레이아웃을 url 형태로 보내야 합니다. 어떤 형태로 보내면 되는지 알기 위해서 구글 애널리틱스 API 사이트에 방문하면 알 수 있습니다. 중간쯤 보면 3rd party website에 대시보드 쉽게 대시보드를 만들 수 있는 'Embed API'가 있습니다. 우리는 대시보드를 만들 것은 아니지만 이것을 이용하면 쉽게 API를 사용할 수 있습니다.

 

구글-애널리틱스-API-화면
Embed-API-선택

 

 

2. Query Explorer

다음 Embed API에서 Query Explorer를 선택합니다. 제일 상단에 제공받을 사이트의 정보를 넣습니다. 그리고 Set the query parameters에서 제공받을 데이터 레이아웃을 입력합니다. metrics에는 값을 넣고, dimensions에는 구분값을 넣습니다. 예를 들어 페이지뷰 수는 metrics에, 월은 dimension에 들어갑니다.

 

원하는 값을 모두 셋팅하였으면 제일 하단에 Run Query 버튼을 클릭합니다.

 

 

3. API Query URI

Run Query를 누르면 요청한 레이아웃의 데이터를 보여줍니다. 제일 하단에 보면 API Query URI가 있는데, 필자는 이 URI를 편집하여 원하는 양식의 데이터를 제공받을 계획입니다. 중요한 파라미터들은 앞에서 이미 세팅을 다 했고, 여기서 날짜만 바꿔서 사용하면 됩니다.

 

 

4. JSON to DataFrame

데이터는 json형태로 제공되는데 이는 파이썬 dataframe형태로 쉽게 변환할 수 있습니다. 에러가 발생한다면 요청하는 url을 브라우저에 입력해보세요. 어떤 에러메시지가 나오는지 쉽게 확인할 수 있습니다. 제 경우 권한 부여가 안 돼 에러가 발생했습니다.

 

다음으로 API를 통해서 제공받을 수 있는 데이터건수는 1회 1,000건입니다. 그래서 한 달치 데이터를 한 번에 받을 경우 실제 데이터가 1,000건이 넘을 경우 문제가 됩니다. 그래서 필요로 하는 데이터가 1,000건이 넘을 경우 일단위로 쪼개서 받은 다음에 합쳐야 합니다.

 

# coding=utf-8
#
# GA API

from urllib.request import urlopen
import pandas as pd
import json
import sqlite3
import webbrowser
import numpy as np

import tistory_list


if __name__ == "__main__":

    access_token=get_token()

    blog_total=pd.DataFrame()

    for day in range(1,28):

        day=str(day)
        if len(day)==1:
            day="0"+day

        url="https://www.googleapis.com/analytics/v3/data/ga?ids=[자신에게 해당하는 값을 넣으세요.]&start-date=2018-04-"+day+"&end-date=2018-04-"+day+"&metrics=ga%3Asessions%2Cga%3AbounceRate%2Cga%3Apageviews%2Cga%3ApageviewsPerSession%2Cga%3AadsenseRevenue&dimensions=ga%3ApagePath%2Cga%3Ayear%2Cga%3Aweek%2Cga%3AnthMonth%2Cga%3AnthDay%2Cga%3AdayOfWeek%2Cga%3AyearWeek&access_token="+access_token


        result_data = urlopen(url)
        result = result_data.read()

        data = json.loads(result)

        # column names
        header = data["columnHeaders"]
        header1 = pd.DataFrame(header)
        header1 = header1["name"].str.split(":").str[1]
        header1 = list(header1)

        # make dataframe
        temp=data["rows"]
        blog=pd.DataFrame(temp,columns=header1,dtype=np.float)
        # blog["adsenseRevenue"]=blog["adsenseRevenue"].astype(float)


        blog_total=pd.concat([blog_total,blog])

 

오늘은 이렇게 구글 애널리틱스API를 통해서 원하는 양식의 데이터를 제공받는 방법에 대해서 알아보았습니다. 일단위로 업데이트하고, 보기 원하는 지표들을 편집하는 작업만 하면 되겠습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기