找出应该在哪里定义分析

Finding out where analytics should be defined

我在 python 中使用 Google Analytics api 并不断收到错误消息

NameError: name 'analytics' is not defined. 

我已经在 analytics api 站点和 Whosebug 上搜索了好几天的答案。如果有人可以指出正确文档的方向或在这里帮助我,将不胜感激。附件是我到目前为止的代码。

from apiclient.http import MediaFileUpload
from apiclient.errors import HttpError

try:
  media = MediaFileUpload('Bing_Ad_Test.csv',
                          mimetype='application/octet-stream',
                          resumable=False)
  daily_upload = analytics.management().uploads().uploadData(
      accountId='',
      webPropertyId='',
      customDataSourceId='',
      media_body=media).execute()

except TypeError, error:
  # Handle errors in constructing a query.
  print 'There was an error in constructing your query : %s' % error

except HttpError, error:
  # Handle API errors.
  print ('There was an API error : %s : %s' %
         (error.resp.status, error.resp.reason))

错误说明发生了什么:您没有定义之前第 9 行中使用的名称 analytics

daily_upload = analytics.management().uploads().uploadData(

您需要完成第一步才能使用和导入它。您还需要一个帐户,因为它需要授权。

https://developers.google.com/analytics/devguides/reporting/core/v3/quickstart/service-py

设置后,您应该阅读

https://developers.google.com/analytics/devguides/reporting/core/v3/coreDevguide

这样你应该没问题!

您正在使用的脚本假定您已经通过身份验证并创建了服务。在您可以 运行 这个脚本之前,您需要构建服务对象。看这个例子:

import argparse

from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials

import httplib2
from oauth2client import client
from oauth2client import file
from oauth2client import tools
from apiclient.http import MediaFileUpload

# SET VARS
SERVICE_ACCOUNT_EMAIL='XXX'
CUSTOM_DATA_SOURCE_ID='XXX'
WEB_PROPERTY_ID='XXX'
ACCOUNT_ID='XXX'
CSV_IMPORT_FILE_LOCATION='XXX'
CREDENTIALS_KEY_FILE_LOCATION='XXX'

def get_service(api_name, api_version, scope, key_file_location,
                service_account_email):

  credentials = ServiceAccountCredentials.from_p12_keyfile(
    service_account_email, key_file_location, scopes=scope)

  http = credentials.authorize(httplib2.Http())

  # Build the service object.
  service = build(api_name, api_version, http=http)

  return service

def uploadCSV(service):
  try:
    media = MediaFileUpload(CSV_IMPORT_FILE_LOCATION,
                          mimetype='application/octet-stream',
                          resumable=False)
    daily_upload = service.management().uploads().uploadData(
        accountId=ACCOUNT_ID,
        webPropertyId=WEB_PROPERTY_ID,
        customDataSourceId=CUSTOM_DATA_SOURCE_ID,
        media_body=media).execute()

  except TypeError, error:
    # Handle errors in constructing a query.
    print 'There was an error in constructing your query : %s' % error


def main():
  # Define the auth scopes to request.
  scope = ['https://www.googleapis.com/auth/analytics.edit','https://www.googleapis.com/auth/analytics']

  # Authenticate and construct service.
  service = get_service('analytics', 'v3', scope, CREDENTIALS_KEY_FILE_LOCATION,
    SERVICE_ACCOUNT_EMAIL)

  # Upload CSV Data
  uploadCSV(service)


if __name__ == '__main__':
  main()