Google Analytics Data API

GreenBeanΒ·2022λ…„ 3μ›” 8일
2
post-thumbnail

Google Analytics Data API

  • with Python

Automation Help: Google Analytics Data API (GA4) with Python [Extensive Guide]


Google Analytics Data API (GA4)

  • Google μ• λ„λ¦¬ν‹±μŠ€ 데이터 API(GA4) ν™œμ„±ν™”
    • Google Cloud Platform μ½˜μ†”λ‘œ μ΄λ™ν•˜μ—¬ Google Analytics Data APIλ₯Ό ν™œμ„±ν™”ν•˜λŠ” 것뢀터 μ‹œμž‘

  • IAM 및 μ„œλΉ„μŠ€λ₯Ό ν΄λ¦­ν•œ λ‹€μŒ μ„œλΉ„μŠ€ 계정을 ν΄λ¦­ν•˜μ—¬ μ„œλΉ„μŠ€ 계정 μ„€μ •μœΌλ‘œ 이동

  • CREATE SERVICE ACCOUNTλ₯Ό ν΄λ¦­ν•˜μ—¬ ν•„μš”ν•œ μ„œλΉ„μŠ€ 계정 생성을 μ‹œμž‘

  • μ„œλΉ„μŠ€ κ³„μ •μ˜ 이름을 μž…λ ₯ν•œ λ‹€μŒ μ™„λ£Œλ₯Ό 클릭
    • 이름은 μ€‘μš”ν•˜μ§€ μ•Šμ§€λ§Œ λͺ¨λ²” 사둀λ₯Ό μœ„ν•΄ 이 μ„œλΉ„μŠ€ 계정을 μ‚¬μš©ν•˜λŠ” 방법을 μ„€λͺ…ν•˜λŠ” μ„€λͺ…κ³Ό μ„€λͺ…을 ν¬ν•¨ν•˜λŠ” 것이 μ’‹μŒ

  • μ„œλΉ„μŠ€ 계정을 λ§Œλ“  μ΄ν›„μ—λŠ” μ„œλΉ„μŠ€ 계정 ν‚€λ₯Ό 생성
    • APIλ₯Ό μΈμ¦ν•˜κΈ° μœ„ν•΄ μŠ€ν¬λ¦½νŠΈμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” JSON 파일
    • μ„œλΉ„μŠ€ κ³„μ •μ˜ 였λ₯Έμͺ½μ— μžˆλŠ” μ„Έ 개의 점을 ν΄λ¦­ν•œ λ‹€μŒ ν‚€ 관리λ₯Ό 클릭

  • ν˜„μž¬ 이 μ„œλΉ„μŠ€ 계정과 μ—°κ²°λœ ν‚€κ°€ μ—†μŒμ„ μ•Œ 수 μžˆμœΌλ―€λ‘œ ν‚€ μΆ”κ°€λ₯Ό ν΄λ¦­ν•˜κ³  μƒˆ ν‚€λ₯Ό 클릭
    • μ ‘κ·Ό λ°©μ‹μ—μ„œλŠ” JSON νŒŒμΌμ„ μ‚¬μš©ν•  κ²ƒμ΄λ―€λ‘œ 섀정을 κ·ΈλŒ€λ‘œ 두고 CREATEλ₯Ό 클릭
    • 그러면 JSON 파일 λ‹€μš΄λ‘œλ“œκ°€ μžλ™μœΌλ‘œ μ‹œμž‘

GA4 속성에 Google μ• λ„λ¦¬ν‹±μŠ€ 데이터 API(GA4) μ„œλΉ„μŠ€ 계정 μΆ”κ°€

  • μ½”λ“œ μž‘μ„±μ„ μ‹œμž‘ν•˜κΈ° μ „ λ§ˆμ§€λ§‰ λ‹¨κ³„μ—λŠ” Google μ• λ„λ¦¬ν‹±μŠ€ 4 μ†μ„±μœΌλ‘œ μ΄λ™ν•˜μ—¬ μ„œλΉ„μŠ€ 계정을 μ‚¬μš©μž 관리에 μΆ”κ°€ν•˜λŠ” μž‘μ—… ν•„μš”
    • Google μ• λ„λ¦¬ν‹±μŠ€μ—μ„œ GA4 μ†μ„±μœΌλ‘œ μ΄λ™ν•˜μ—¬ κ΄€λ¦¬μž μ„€μ • β†’ 속성 μ‚¬μš©μž 관리λ₯Ό 클릭
    • 였λ₯Έμͺ½ 상단 λͺ¨μ„œλ¦¬μ— 큰 νŒŒλž€μƒ‰ λ”ν•˜κΈ° λ²„νŠΌμ΄ ν‘œμ‹œλ˜μ–΄μ•Ό 함
    • 읽기 및 뢄석 κΆŒν•œμ΄ μΆ©λΆ„ν•΄μ•Ό 함

Google Analytics Data API(GA4)λ₯Ό μ‚¬μš©

  • ν„°λ―Έλ„μ—μ„œ λ‹€μŒ pip λͺ…령을 μ‚¬μš©ν•˜μ—¬ Google Analytics Data API(GA4)λ₯Ό μ„€μΉ˜
    • pip install google-analytics-data
  • 둜컬 μ‹œμŠ€ν…œμ—μ„œ 슀크립트λ₯Ό μ‹€ν–‰ν•˜λŠ” 경우 JSON νŒŒμΌμ„ Python 파일과 λ™μΌν•œ 폴더에 넣은 이후 진행
    • μ•„λž˜ μ½”λ“œλ₯Ό μ‚¬μš© ν•˜μ—¬ JSON 파일 κ°’μœΌλ‘œ GOOGLE_APPLICATION_CREDENTIALSλΌλŠ” ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •
    • 이것은 μŠ€ν¬λ¦½νŠΈκ°€ JSON 파일이 μžˆλŠ” μœ„μΉ˜λ₯Ό μ•„λŠ” 데 ν•„μš”
import os
# Set environment variables
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = service_account_file_path
  • 이제 λ‹€μŒ μ½”λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ κ°„λ‹¨ν•œ λ³΄κ³ μ„œλ₯Ό μ‹€ν–‰ν•  수 있음
    • PROPERTY_IDλ₯Ό 속성 ID둜 λ³€κ²½
    • 속성 IDλ₯Ό 찾으렀면 Google μ• λ„λ¦¬ν‹±μŠ€ κ΄€λ¦¬μž μ„€μ •μœΌλ‘œ μ΄λ™ν•˜μ—¬ 속성 μ„€μ •μœΌλ‘œ 이동
      • 였λ₯Έμͺ½ μƒλ‹¨μ—μ„œ 속성 IDλ₯Ό 찾을 수 있음
      • μ€‘μš”: 속성 ID와 μΈ‘μ • IDλ₯Ό ν˜Όλ™ 주의
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import DateRange
from google.analytics.data_v1beta.types import Dimension
from google.analytics.data_v1beta.types import Metric
from google.analytics.data_v1beta.types import RunReportRequest


def sample_run_report(property_id):
    """Runs a simple report on a Google Analytics 4 property."""
    # Using a default constructor instructs the client to use the credentials
    # specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
    client = BetaAnalyticsDataClient()

    request = RunReportRequest(
        property=f"properties/{property_id}",
        dimensions=[Dimension(name="city")],
        metrics=[Metric(name="activeUsers")],
        date_ranges=[DateRange(start_date="2020-03-31", end_date="today")],
    )
    response = client.run_report(request)

    print("Report result:")
    for row in response.rows:
        print(row.dimension_values[0].value, row.metric_values[0].value)


sample_run_report(PROPERTY_ID)

κ²°κ³Όλ₯Ό CSV λ˜λŠ” Excel둜 μ €μž₯

  • Pandas 라이브러리 μ‚¬μš© κ°€λŠ₯
    • CSV둜 μ €μž₯ν•˜λ €λ©΄ .to_csvλ₯Ό μ‚¬μš©ν•˜κ³  Excel의 경우 .to_excel을 μ‚¬μš©
import pandas as pd

def sample_run_report(property_id, export_path):
    """Runs a simple report on a Google Analytics 4 property."""

    # Using a default constructor instructs the client to use the credentials
    # specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
    client = BetaAnalyticsDataClient()

    request = RunReportRequest(
        property=f"properties/{property_id}",
        dimensions=[Dimension(name="city")],
        metrics=[Metric(name="activeUsers")],
        date_ranges=[DateRange(start_date="2020-03-31", end_date="today")],
    )
    response = client.run_report(request)

    output = []
    print("Report result:")
    for row in response.rows:
      output.append({"City":row.dimension_values[0].value, "Active Users": row.metric_values[0].value})
    df = pd.DataFrame(output)
    df.to_csv(export_path)
  
sample_run_report(PROPERTY_ID, "export.csv")
df = pd.read_csv("export.csv")
df.head(5)
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 λŒ“κΈ€