Xin chào Analytics Reporting API phiên bản 4; Bắt đầu nhanh Python cho các ứng dụng đã cài đặt

Hướng dẫn này sẽ trình bày các bước bắt buộc để truy cập vào API Báo cáo Analytics phiên bản 4.

1. Bật API

Để bắt đầu sử dụng API Báo cáo Analytics phiên bản 4, trước tiên, bạn cần sử dụng công cụ thiết lập. Công cụ này sẽ hướng dẫn bạn tạo dự án trong Bảng điều khiển API của Google, bật API và tạo thông tin đăng nhập.

Lưu ý: Để tạo Mã ứng dụng web hoặc Ứng dụng đã cài đặt, bạn cần đặt tên sản phẩm trong màn hình đồng ý. Nếu chưa thực hiện, bạn sẽ thấy lời nhắc Định cấu hình màn hình đồng ý.

Tạo thông tin đăng nhập

  • Mở trang Thông tin xác thực.
  • Nhấp vào Tạo thông tin xác thực rồi chọn Mã ứng dụng khách OAuth
  • Đối với Application type (Loại ứng dụng), hãy chọn Other (Khác).
  • Đặt tên cho mã ứng dụng khách là quickstart rồi nhấp vào quickstart.

Trên trang Thông tin xác thực, hãy nhấp vào mã ứng dụng khách mới tạo rồi nhấp vào Tải JSON xuống rồi lưu dưới dạng client_secrets.json. Bạn sẽ cần đến mã này trong phần hướng dẫn sau.

2. Cài đặt thư viện ứng dụng

Bạn nên dùng pip cùng với venv để cài đặt các gói Python: sudo -s apt-get install python3-venv python3 -m venv analytics-quickstart source analytics-quickstart/bin/activate pip install --upgrade google-api-python-client pip install --upgrade oauth2client

3. Thiết lập mẫu

Bạn cần tạo một tệp có tên HelloAnalytics.py chứa mã mẫu đã cho.

  1. Sao chép hoặc tải xuống mã nguồn sau vào HelloAnalytics.py.
  2. Di chuyển client_secrets.json đã tải xuống trước đó vào cùng thư mục với mã mẫu.
  3. Thay thế giá trị của VIEW_ID. Bạn có thể sử dụng Trình khám phá tài khoản để tìm Mã chế độ xem.
"""Hello Analytics Reporting API V4."""

import argparse

from apiclient.discovery import build
import httplib2
from oauth2client import client
from oauth2client import file
from oauth2client import tools

SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
CLIENT_SECRETS_PATH = 'client_secrets.json' # Path to client_secrets.json file.
VIEW_ID = '<REPLACE_WITH_VIEW_ID>'


def initialize_analyticsreporting():
  """Initializes the analyticsreporting service object.

  Returns:
    analytics an authorized analyticsreporting service object.
  """
  # Parse command-line arguments.
  parser = argparse.ArgumentParser(
      formatter_class=argparse.RawDescriptionHelpFormatter,
      parents=[tools.argparser])
  flags = parser.parse_args([])

  # Set up a Flow object to be used if we need to authenticate.
  flow = client.flow_from_clientsecrets(
      CLIENT_SECRETS_PATH, scope=SCOPES,
      message=tools.message_if_missing(CLIENT_SECRETS_PATH))

  # Prepare credentials, and authorize HTTP object with them.
  # If the credentials don't exist or are invalid run through the native client
  # flow. The Storage object will ensure that if successful the good
  # credentials will get written back to a file.
  storage = file.Storage('analyticsreporting.dat')
  credentials = storage.get()
  if credentials is None or credentials.invalid:
    credentials = tools.run_flow(flow, storage, flags)
  http = credentials.authorize(http=httplib2.Http())

  # Build the service object.
  analytics = build('analyticsreporting', 'v4', http=http)

  return analytics

def get_report(analytics):
  # Use the Analytics Service Object to query the Analytics Reporting API V4.
  return analytics.reports().batchGet(
      body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
          'metrics': [{'expression': 'ga:sessions'}]
        }]
      }
  ).execute()


def print_response(response):
  """Parses and prints the Analytics Reporting API V4 response"""

  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):
        print header + ': ' + dimension

      for i, values in enumerate(dateRangeValues):
        print 'Date range (' + str(i) + ')'
        for metricHeader, value in zip(metricHeaders, values.get('values')):
          print metricHeader.get('name') + ': ' + value


def main():

  analytics = initialize_analyticsreporting()
  response = get_report(analytics)
  print_response(response)

if __name__ == '__main__':
  main()

4. Chạy mẫu

Chạy mẫu bằng cách sử dụng:

python HelloAnalytics.py
  • Ứng dụng sẽ tải trang cấp phép trong trình duyệt.
  • Nếu chưa đăng nhập vào Tài khoản Google, bạn sẽ được nhắc đăng nhập. Nếu đã đăng nhập vào nhiều Tài khoản Google, bạn sẽ được yêu cầu chọn một tài khoản để sử dụng cho khoản uỷ quyền này.

Khi bạn hoàn thành các bước này, mẫu sẽ xuất ra số phiên trong 7 ngày qua cho chế độ xem đã cho.

Khắc phục sự cố

Lỗi thuộc tính: Đối tượng "Module_six_moves_urllib_parse" không có thuộc tính "urlparse"

Lỗi này có thể xảy ra trong Mac OSX, trong đó cài đặt mặc định của mô-đun "six" (phần phụ thuộc của thư viện này) được tải trước mô-đun mà pip đã cài đặt. Để khắc phục vấn đề này, hãy thêm vị trí cài đặt của pip vào biến môi trường hệ thống PYTHONPATH:

  • Xác định vị trí cài đặt của pip bằng lệnh sau:

    pip hiển thị sáu | grep "Vị trí:" | cắt -d " " -f2

  • Thêm dòng sau vào tệp ~/.bashrc, thay thế &lt;pip_install_path&gt; bằng giá trị được xác định ở trên:

    xuất PYTHONPATH=$PYTHONPATH:<pip_install_path>

  • Tải lại tệp ~/.bashrc trong mọi cửa sổ dòng lệnh đang mở bằng cách sử dụng lệnh sau:

    nguồn ~/.bashrc