как автоматизировать и извлекать отчеты из dv360 api с помощью dbm api и учетной записи службы google oauth python?

Я пытаюсь автоматизировать запланированный отчет, используя python из DV360.

Насколько я понимаю, вам нужно использовать API DBM для этого.

Для начала он говорит:

  1. включить API DBM в консоли Google - готово.
  2. После того, как вы включили свой API DBMI, он автоматически перенаправит вас в раздел учетных данных DBM и сообщит, какие существующие учетные данные в вашем проекте совместимы с API.

• У меня есть текущая учетная запись службы, совместимая с API.• Я скопировал адрес электронной почты учетной записи службы и настроил профиль пользователя для электронной почты в DV360 с правами администратора.

Мой код ниже выглядит следующим образом:

# читать в модулях очистки Python

      import pandas as pd
from pandas.io import gbq
import numpy as np
import datetime 


#read in service account oauth
from google.oauth2 import service_account


#read in other google modules needed 
from google.cloud import bigquery
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials



SCOPES = ["https://www.googleapis.com/auth/spreadsheets", 
          "https://www.googleapis.com/auth/bigquery",
          "https://www.googleapis.com/doubleclickbidmanager"]
SERVICE_ACCOUNT_FILE = 'pathtoserviceaccountcreds.json'

creds = None
creds = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE, scopes=SCOPES)


dbm = build('doubleclickbidmanager', 'v1.1', credentials = creds)

body={
    'params': {
        'type': 'TYPE_GENERAL',
        'metrics': [
            'METRIC_IMPRESSIONS', 'METRIC_CLICKS', 
            'METRIC_REVENUE_ADVERTISER'
        ],
        'groupBys': [
            'ADVERTISER', 'ADVERTISER_ID', 'INSERTION_ORDER','INSERTION_ORDER_ID', 
            'ADVERTISER_CURRENCY'
        ],
        'filters': [{
            'type': 'FILTER_ADVERTISER',
            'value': 'XXXXXXXXX'
        }],
    },
    'metadata': {
        'title': 'DV360 Automation API-generated report',
        'dataRange': 'LAST_90_DAYS',
        'format': 'csv'
    },
    'schedule': {
        'frequency': 'ONE_TIME'
    }
}

Когда я запускаю код до dbm, который использует метод сборки для настройки клиента google apis, кажется, что он правильно настроен

вывод, он возвращает, это googleapiclient.discovery.Resource at 0x1200e8d90

Однако, когда я пытаюсь запустить приведенный ниже код, чтобы попытаться создать запрос, я получаю следующую ошибку

      dbm.queries().createquery(body=report_definition).execute()

RefreshError: ('Нет токена доступа в ответе.', {'Id_token': 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjI3YzcyNjE5ZDA5MzVhMjkwYzQxYzNmMDEwMTY3MTMLCiJQxYzNmMDEwMTY3MTMLCiFlJG1ZiTMiCiCiQiQiQiQiQiQiQiQiQiQiQiQiQiQiQifBoy73zflwNMpgfzNErJZz7vhb4xmUJwJp9teHdemgkSDVPb5IwXiZA2JL9MSyL7glB6eaWHQRni8uJTWp_nxQlUzfH6G7uBf49F9eMxCMTgu_VbvHh0RENlxmbW9w2jJ-ezSNHHK4qlgr0Rb6dqNEKJV8GiIasxO5jhb3CM5-nwDN055dSKyWEyk98u9_DarnE1suv-e_RwcqhpsVCR0sl45Z-dp0k52uSSbF14iv0VbVyQfSfN7II2b0miNiCbDlmN4Ak-h3pP3w5b0LrUYhX0Jvq_83gz35BV2LkwQ9fDx6r8_tymrGjmrhC-QzHD8a4a1whUcpW4Ygd5sXkoFA'})

Есть 2 потока из всех потоков DBM / dv360, существующих в стеке, которые наиболее точно соответствуют моему вопросу, но ни один из них не является окончательным, и всем им больше года

вы можете найти кейсы:

  1. API-интерфейс диспетчера Doubleclickbid с использованием служебного аккаунта

  2. Как использовать API диспетчера ставок по двойному щелчку (DBM) в Python

Для справки я также использовал суперадминистратора в консоли Google, чтобы предоставить доступ на уровне домена к учетной записи службы, которую я использую, с указанными выше областями действия в соответствии с приведенной ниже ссылкой на документацию:https://developers.google.com/identity/ протоколы / oauth2 / сервис-аккаунт

Я также попытался запустить версию, в которой я настраиваю делегированные учетные данные, в которых в примере электронной почты, который я использовал, есть как доступ администратора для доступа к DV360, так и моя учетная запись службы.

      delegated_creds = creds.with_subject('example@.email.com')

снова, когда я запускаю сборку с использованием delegated_creds вместо учетных данных, похоже, что он правильно настраивает

      dbm = build('doubleclickbidmanager', 'v1.1', credentials = delegated_creds)
 

он возвращает googleapiclient.discovery.Resource по адресу 0x11a89f5b0

• но снова код ломается, когда вы запускаете метод .execute ().

      dbm.queries().listqueries().execute()

возвращает ошибку:HttpAccessTokenRefreshError: invalid_scope: https://www.googleapis.com/auth/spreadsheets не является допустимой строкой аудитории.

• ошибка повторяется, даже если я удалю другие области и просто оставлю

RefreshError: ('invalid_scope: https://www.googleapis.com/doubleclickbidmanager не является допустимой строкой аудитории.', {'Error': 'invalid_scope', 'error_description': 'https://www.googleapis.com/ doubleclickbidmanager не является допустимой строкой аудитории.'})

для записи он правильно настроит клиент dbm, если я запустил

      dbm.queries().listqueries().

он возвращает googleapiclient.http.HttpRequest по адресу 0x11aab6170

Может кто-нибудь помочь?

также путь к моим учетным данным правильный, так как я могу использовать API листов Google с этим.

0 ответов

Другие вопросы по тегам