当前位置: 首页 > 知识库问答 >
问题:

Google Ads API-如何使用MCC(管理者帐户)获取数据

顾超
2023-03-14

我试图从谷歌广告API获取活动报告。但是,在尝试使用MCC获取数据时出错:

代码:

  import sys,os
  from google.ads.google_ads.client import GoogleAdsClient
  from google.ads.google_ads.errors import GoogleAdsException

  def get_data(client, customer_id):
    ga_service = client.get_service("GoogleAdsService", version="v6")

    query = """
        SELECT
          campaign.name,
          campaign.status,
          segments.device,
          metrics.impressions,
          metrics.clicks,
          metrics.ctr,
          metrics.average_cpc,
          metrics.cost_micros
        FROM campaign
        WHERE segments.date DURING LAST_30_DAYS
        """

    # Issues a search request using streaming.
    response = ga_service.search_stream(customer_id, query=query)

    try:
        for batch in response:
            for row in batch.results:
                print(
                    row
                )
    except GoogleAdsException as ex:
        print(
            f'Request with ID "{ex.request_id}" failed with status '
            f'"{ex.error.code().name}" and includes the following errors:'
        )
        for error in ex.failure.errors:
            print(f'\tError with message "{error.message}".')
            if error.location:
                for field_path_element in error.location.field_path_elements:
                    print(f"\t\tOn field: {field_path_element.field_name}")
        sys.exit(1)


    if __name__ == "__main__":
        # get client object with oauth2
        credentials = {'developer_token': "xxxxxxxxxxxxxxx",
            'refresh_token': "xxxxxxxxxxxxxxxx",
            'client_id': "xxxxxxxxxxxxxxx",
            'client_secret': "xxxxxxxxxxxxxxxx"
                       }
        google_ads_client = GoogleAdsClient.load_from_dict(credentials)
    
        get_data(google_ads_client, 'xxxxxxxxx')

Wehn使用MCC客户端ID运行代码:

get_data(google_ads_client, 'MANAGER(MCC)_CLIENT_ID')

我遇到了错误1:

请求:ClientCustomerId:xxxxxxxxx,主机:googleads。古格里皮斯。com:443,方法:/google。广告。v6。服务。请求流/请求流管理器不能为True,请求流管理器不能为True,请求流管理器不能为searchdss。要检索指标,请对manager帐户下的每个客户机帐户发出单独的请求。

我认为,解决方案是为帐户本身设置一个不同的ClientCustomerId,而不是MCC。于是我这样做了,并使用direct帐户的客户端id再次运行代码,结果发现另一个错误:

Wehn使用帐户客户端ID运行代码:

get_data(google_ads_client, 'ACCOUNT_CLIENT_ID')

我得到了错误2:

请求:ClientCustomerId:xxxxxxx,主机:googleads。古格里皮斯。com:443,方法:/google。广告。v6。服务。GoogleAddService/SearchStream,请求ID:XXXXXXXXX,IsFault:True,FaultMessage:用户没有访问客户的权限。注意:如果要访问客户,必须在“登录客户id”标题中设置经理的客户id。看见https://developers.google.com/google-ads/api/docs/concepts/call-structure#cid

这个错误本质上是说插入经理的客户id,我已经插入了,并且得到了错误1(!)。

我错过了什么?

共有1个答案

胡墨竹
2023-03-14

解决了的:

应使用帐户客户端id启动该功能:

get_data(google_ads_client, 'ACCOUNT_CLIENT_ID')

并且,一个键值对应该被添加到凭据判决(MCC客户端ID):

    credentials = {'developer_token': "xxxxxxxxxxxxxxx",
        'refresh_token': "xxxxxxxxxxxxxxxx",
        'client_id': "xxxxxxxxxxxxxxx",
        'client_secret': "xxxxxxxxxxxxxxxx",
        // Add this line below
        'login_customer_id': 'mcc_client_id'
                   }
 类似资料:
  • 管理帐户数据 若要使用此机能,可能需先更新系统软件。 可确认或变更进入PlayStation®Network时建立的帐户数据。 仅能于已登入PlayStation®Network时操作。请进入(PlayStation®Netrowk)并选择(管理账户)。 可确认/变更的项目 账户管理 可确认/变更帐户数据。 信用卡数据 登入ID(电子邮件地址) 密码 姓名 地址 个人造型 个人资料 通知邮件设定

  • 问题内容: 我需要能够从Go应用程序中管理Windows本地用户帐户,并且似乎没有使用CGo,就没有本机绑定。 我的最初搜索使人们说,最好使用“ exec.Command”运行“ net user”命令,但是在解析响应代码时,这似乎很混乱且不可靠。 我发现可以在netapi32.dll库中找到处理此类事件的函数,但是由于Go本身不支持Windows头文件,因此调用这些函数似乎并不容易。 以http

  • 我正在使用Azure AD和Office 365 API在我的项目中执行OAuth。我的问题是我只能授权管理员帐户(如“user@project.onmicrosoft.com”)并获取数据,但非管理员常规帐户(如“user@hotmail.com”)不能。 我如何实现OAuth2 获取授权代码: https://login.microsoftonline.com/common/oauth2/au

  • 问题内容: 我正在尝试使用Flask访问用户代理,但是我找不到有关它的文档,或者它没有告诉我。 问题答案: 您还可以使用包含以下属性的对象,这些属性是基于useragent字符串创建的: 平台(Windows,Linux,MacOS等) 浏览器(chrome,firefox,msie等) 版 语言 字串()

  • 我的问题是:不使用powershell命令是否可以获得azure active directory租户id? 我找到了这两个博客,在这个帮助下,我已经能够从PowerShell获得承租人ID和订阅ID。这是找回房客的唯一方法吗? 在Windows PowerShell中获取Windows Azure Active Directory承租人ID 对PowerShell的Windows Azure A