0

I am trying to run this report:



SCOPES = ['https://www.googleapis.com/auth/yt-analytics.readonly','https://www.googleapis.com/auth/yt-analytics.force-ssl','https://www.googleapis.com/auth/yt-analytics-monetary.readonly','https://www.googleapis.com/auth/youtube.readonly']
API_SERVICE_NAME = 'youtubeAnalytics'
API_VERSION = 'v2'
CLIENT_SECRETS_FILE = '/Users/secret.json'

def initialize_analyticsreporting():
    parser = argparse.ArgumentParser(
        formatter_class=argparse.RawDescriptionHelpFormatter,
        parents=[tools.argparser])
    flags = parser.parse_args([])

    flow = client.flow_from_clientsecrets(
        CLIENT_SECRETS_FILE, scope=SCOPES,
        message=tools.message_if_missing(CLIENT_SECRETS_FILE))

    storage = file.Storage('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())
    analytics = build('youtubeAnalytics', 'v2', http=http)

    return analytics


def execute_api_request(client_library_function, **kwargs):
  response = client_library_function(
    **kwargs
  ).execute()

  print(response)

youtubeAnalytics = initialize_analyticsreporting()
execute_api_request(
    youtubeAnalytics.reports().query,
    ids='channel==MINE',
    startDate='2020-05-01',
    endDate='2020-12-31',
    dimensions='video',
    metrics='views,likes,dislikes,shares,adImpressions',
    maxResults=200,
    sort='-views'
)

But I get :

"Insufficient permission to access this report."

I am authenticated with OAuth, I am the content owner but I cant get the adImpressions metric to work.

My end goal is to simply get the impressions of a video using youtube analytics API. I've seen multiple threads on this topic but neither answers the question.

Jonas Palačionis
  • 4,591
  • 4
  • 22
  • 55

1 Answers1

0

As DalmTo mentioned in the comments:

After adding additional scopes:

SCOPES = ['https://www.googleapis.com/auth/yt-analytics.readonly']

To

SCOPES = ['https://www.googleapis.com/auth/yt-analytics.readonly',
          'https://www.googleapis.com/auth/yt-analytics-monetary.readonly',
          'https://www.googleapis.com/auth/youtube.readonly']

And reauthenticating - deleting the .dat file, and letting a new one to be created, now I am able to receive the desired metrics.

Jonas Palačionis
  • 4,591
  • 4
  • 22
  • 55