Я просмотрел некоторые ответы, но не смог найти именно то, что искал. Если есть ответ, который я мог бы пропустить, я с удовольствием посмотрю на него.
Я получаю объект analytics
(аналитика - это имя объекта). Он построен на основе данных Google Analytics. Идея состоит в том, что я могу извлечь из этого объекта определенный отчет get_UserData
(используя user_id) и использовать эти данные для завершения sh моей программы.
Проблема, с которой я столкнулся, заключается в том, что я должен пройти по 1200 пользователям и проверить, есть ли у каждого данные (другими словами, у меня есть длинный список возможных пользователей, но только некоторые люди были активными и только те, которые активны у людей есть данные в объекте)
Это может занять до 15 минут до завершения sh этого процесса, я хочу избежать необходимости тянуть get_UserData
, потому что это занимает больше времени. Мой план состоит в том, чтобы обойти get_UserData
, если у пользователя нет данных в analytics
, чтобы сэкономить время
Я надеюсь, что это имеет смысл (По сути: я хочу сэкономить время, и является новым для объекта- ориентированное программирование)
КОД У меня есть:
def initialise_analytics_reporting():
"""Initializes the analytics reporting service object.
Returns:
an authorized analytics reporting 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(
"ga-credentials/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.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('ga-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
def get_user_Activity(analytics, VIEW_ID, user_id, time):
"""
:type user_id: str
"""
# Use the Analytics Service Object to query the Analytics Reporting API V4.
try:
if hasattr(analytics.userActivity(), user_id): <<<<----- THIS IS WHAT I HAVE DONE
x = analytics.userActivity().search(
body={
"viewId": VIEW_ID,
"user": {
"type": "USER_ID",
"userId": user_id
},
"dateRange": {
"startDate": time,
"endDate": "yesterday"
},
"activityTypes": [
"PAGEVIEW", "EVENT"
]
}
).execute()
except:
pass
return x
Но при запуске этого я не получаю никаких данных от пользователя, который активен ??
Пожалуйста, помогите.