Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 3, 2013 18:43:03

Mazay_Ka
Зарегистрирован: 2013-04-03
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

Google Analytics API на Питоне

Всем Здрасте! Нуждаюсь в вашей помощи Гуру Девелоперы!
С пргораммированием я знаком не очень. Вот стоит на работе задачка по извлечению данных из Гугл Аналитикс, сам я аналитик и мне этобы очень помогло для работы, у в отделе программеров тикетов до следующего года , поскольку аккаунтов там более 250 то извечение в ручную как вы понимаете не подходит стал я разбираться менюалы листать, примеры учебники справочники. Вообщем на основе примеров и другой полезной инфы в нете склепал я приложение на питоне которые вытаскивает данные что мне нужно по заданому ID.
Начало было положено, дальше чтобы добить все не обходимые ID я запустил циклы в которых у меня появилась проблемка ниже добавлю код и обьясню чтобы я хотел от Вас узнать.
Это моя мэин в ней позадавал сервисы и что где будет вызываться! Простити меня пожалуйста за кривую нюбскую терминологию!

def main(argv):
    # Step 1. Get an analytics service object.
    service = sample_utils.initialize_service()
    try:
        # Step 2. Get the user's first profile ID.
        profile_id = get_profile_id(service)
        if profile_id:
            # Step 3. Query the Core Reporting API.
            results = get_results(service, profile_id)
            # Step 4. Output the results.
            print_results(results)
    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 ('Arg, there was an API error : %s : %s' %
                     (error.resp.status, error._get_reason()))
    except AccessTokenRefreshError:
        # Handle Auth errors.
        print ('The credentials have been revoked or expired, please re-run '
                     'the application to re-authorize')

Дальше я определяю функцию которая с помощью циклов добудет мне ID пользуясь которым я вытаскиваю параметры с гугла
def get_profile_id(service):
        accounts = service.management().accounts().list().execute()
    account_list = accounts.get('items')
    account_list = account_list[0:10]
    for account in account_list:
        time.sleep(0.025)
        id = account.get('id')
        webproperties = service.management().webproperties().list(accountId=id).execute()
        webproperties = webproperties.get('items')
        for webproperty in webproperties:
            id_web = webproperty.get('id')
            profiles = service.management().profiles().list(accountId=id,webPropertyId=id_web).execute()
            profiles = profiles.get('items')
            for profile in profiles:
               profile_id = profile.get('id')
               return profile_id
    return None
в выше указаную функцию мне нужно вставить функцию ниже которая вытягивает необходимые данные, с переменной которуб мы получили в верхней функции profile_id причем вставить ее так же в цикле чтобы она провертелась для всех добытых в функции get_profile_id id-шников
def get_results(service,profile_id):
  
  return service.data().ga().get(
      ids='ga:' + profile_id,
      start_date='2013-03-23',
      end_date='2013-03-25',
      metrics='ga:visits',#ga:goalCompletionsAll,ga:pageviews',#ga:pageviewsPerVisit',#ga:timeOnSite,
      dimensions='ga:source',#'ga:customVarValue1', #ga:adContent', # ga:campaign', 
      sort='-ga:visits',
      #filters='ga:medium==organic',
      #start_index='1',
      max_results='25')	
Вот собственно основной вопрос как мне функцию get_results вставить в функцию get_profile_id чтоб они прошли одинаковым циклом и get_results получала с get_profile_id айдишники которые навертелись циклом. Толи ее нада внутри друг друга обьявлять толи есть еще какие приемы.
Если можно пожалуйста с теоритическими примеры как описать или как обьявить функцию внутри функции и желательно цикла поскольку беда у меня синтаксисом да вообще с познаниями капец какая, не судите строго если что, а подскажите что да как если сможете.
Спасибо большое за внимание.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version