Python, объект службы Google в Pandas данных? - PullRequest
0 голосов
/ 21 января 2020

У нас есть онлайн компания. Веб-сайт содержит множество функций, и мы хотели бы проанализировать, какие клиенты посещают какие сайты и сколько раз.

ПРОБЛЕМА:

Я пытаюсь написать программу, которая должна использовать определенные данные Google Analytics. создать таблицу HTML (используя pandas), которую можно просмотреть в любое время с самыми последними данными Google Analytics.

ЧТО Я СДЕЛАН:

Мне удалось пройти проверку подлинности и получить все разрешения (я так думаю, потому что я еще не получил сообщение об ошибке разрешения) и получить взамен объект службы , который я не знаю, как использовать / открыть?

#!/usr/bin/env python3

"""Script that does the following:
 1) Initialise a Google Analytics Reporting API service object
"""
import os
import argparse
from apiclient.discovery import build
import httplib2
from oauth2client import client
from oauth2client import file
from oauth2client import tools
import yaml
import pandas as pd

scopes = ['https://www.googleapis.com/auth/analytics.readonly']
# Path to client_secrets.json file.
client_secrets_path = 'credentials/client_secret_xx.apps.googleusercontent.com.json'


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

  Returns:
    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(
        "credentials/client_secret_xx.apps.googleusercontent.com.json",
        scope='https://www.googleapis.com/auth/analytics.readonly',
        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('credentials/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

Это возвращает аналитику, похожую на это <googleapiclient.discovery.Resource object at 0x00000XOXOXOXOX>

В конце дня, я просто хотел бы храните данные Google Analytics во фрейме данных pandas, чтобы я мог манипулировать ими и работать с ними. Я не эксперт по Google Analytics. Это очень важно для нашего бизнеса, любая помощь будет принята с благодарностью. Я действительно чешу голову.

ОЖИДАЕМЫЙ ВЫХОД (чтобы служить ориентиром к тому, чего я хочу достичь, я достаточно опытен с Pandas. Проблема в том, чтобы получить данные из GA):

user_id  site               visits
123      abc.com/something  12
234      abc.com/smthngelse 7

Спасибо, я с удовольствием отвечу на вопросы

1 Ответ

2 голосов
/ 21 января 2020

Ваш analytics объект является просто служебным объектом - вы можете использовать его для доступа к методам, которые возвращают данные, но он сам по себе не содержит данных Google Analytics. Поскольку вы используете версию 4 основного API отчетности, вы можете просто посмотреть на этот пример из документации:

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()

Измените метрики и добавьте измерения по своему вкусу (не каждый комбинация работает или имеет смысл, хотя), введите свой идентификатор представления, и вы должны быть хороши до go.

...