Отчет Google AdWords API для нескольких аккаунтов - PullRequest
0 голосов
/ 15 января 2020

Я новичок в Google AdWords API.

У меня 7 платформ на моей платформе Google AdWords, я пытаюсь запустить ACCOUNT_PERFORMANCE_REPORT, так как информация берется из файла googleads.yaml, я могу только добавьте туда 1 идентификатор учетной записи.

Чтобы получить клиента клиента и проанализировать его в списке, который я использую:

def get_google_ads_client():
    credentials = google.oauth2.credentials.Credentials(
        None,
        refresh_token='xxxx',
        client_id='xxxx',
        client_secret='xxxx',
        token_uri='https://accounts.google.com/o/oauth2/token')
    credentials.refresh(google.auth.transport.requests.Request())

    google_ads_client = google.ads.google_ads.client.GoogleAdsClient(
        credentials=credentials,
        developer_token='xxxx',
        login_customer_id='xxxx'
    )

    return google_ads_client


def get_client_accounts():
    client = get_google_ads_client()
    ga_service = client.get_service('GoogleAdsService', version='v1')
    query = 'SELECT customer_client.client_customer, customer_client.level FROM customer_client'
    results = ga_service.search('xxxx', query=query)

    account_list = []

    try:
        for row in results:
            if (row.customer_client.level.value == 1):
                customer_id = str(row.customer_client.client_customer.value).replace(
                    'customers/', '')
                account_list.append(customer_id)

    except google.ads.google_ads.errors.GoogleAdsException as ex:
        print('Request with ID "%s" failed with status "%s" and includes the '
              'following errors:' % (ex.request_id, ex.error.code().name))
        for error in ex.failure.errors:
            print('\tError with message "%s".' % error.message)
            if error.location:
                for field_path_element in error.location.field_path_elements:
                    print('\t\tOn field: %s' % field_path_element.field_name)
        sys.exit(1)

    return account_list

Чтобы получить отчет для 1 учетной записи, которую я использую:

def main(client):
    # Initialize appropriate service.
    report_downloader = client.GetReportDownloader(version='v201809')

    # Create report query.
    report_query = (adwords.ReportQueryBuilder()
                    .Select('AbsoluteTopImpressionPercentage', 'AllConversions', 'InvalidClickRate', 'Impressions')
                    .From('ACCOUNT_PERFORMANCE_REPORT')
                    .During('LAST_7_DAYS')
                    .Build())

    # You can provide a file object to write the output to. For this
    # demonstration we use sys.stdout to write the report to the screen.
    report_downloader.DownloadReportWithAwql(
        report_query, 'CSV', sys.stdout, skip_report_header=False,
        skip_column_header=False, skip_report_summary=False,
        include_zero_impressions=True)


if __name__ == '__main__':
    # Initialize client object.
    adwords_client = adwords.AdWordsClient.LoadFromStorage()
    main(adwords_client)

Каким будет правильный способ продвижения вперед, чтобы загрузить отчет для всех учетных записей, а не тот, который назван в файле googleads.yaml?

Спасибо за ваши предложения.

...