如何从Google Ads API获取所有帐户的树状结构?

时间:2019-08-14 08:40:15

标签: google-api google-adwords google-ads-api

有两种类型的Google Ads帐号。直接帐户和经理帐户。

我需要列出所有广告帐户。经理帐户必须排除在外,但必须填充其下链接的帐户。

这是我到目前为止尝试过的:

首先,我向以下URL发出GET请求:

 URL: 'https://googleads.googleapis.com/v1/customers:listAccessibleCustomers?key=XXXXXX',

我正在获取链接到Gmail帐户的广告帐户。我有4个广告帐户。

1,2,3是普通的广告帐户。 4是经理帐户,该帐户具有2个关联的广告帐户。

我可以使用以下查询并点击以下网址来获取它们:

https://googleads.googleapis.com/v2/customers/'+selectedCustomerID+'/googleAds:search


SELECT customer.id,  customer.resource_name, customer.descriptive_name, customer.manager, customer.test_account FROM  customer_client where customer.id ="+ selectedCustomerID

这将返回如下数据:

对于帐户1和3,出现以下错误:

The caller does not have permission

对于帐户2,我正在获取数据。

对于帐户4,我在该帐户下关联的所有帐户以及经理帐户均获得manager:true,在该帐户下我收到5个帐户。

理想情况下,我应该收到3个manager:false帐户和1个manager:true帐户以及2个子帐户。

在这种情况下我应该采取什么方法?

1 个答案:

答案 0 :(得分:1)

我使用customer_client_link服务来完成这项工作。请记住,下面的代码将资源名称分割为几部分,仅返回CID的层次结构

def get_hierarchy(client, customer_id):
ga_service = client.get_service('GoogleAdsService', version='v3')

query = "SELECT customer_client_link.client_customer FROM customer_client_link"

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

try:
    for batch in response:
        for row in batch.results:
            # row.customer_client_link.client_customer contains additional trailing and leading text, but is
            # non-subscriptable so we need to cast it directly then slice the result.
            customer = str(row.customer_client_link.client_customer)
            # Remove the sliding to get the full resource name.
            print(customer[18:-2])