google ads api : list_accessible_customers only return mcc account

63 views
Skip to first unread message

Yang Wenjun

unread,
Jul 16, 2019, 6:17:12 AM7/16/19
to AdWords API and Google Ads API Forum
Hi Team,

previous we are using v201809. It works fine. 

currently, we are moving to new version of Google Ads API , still using python.

Now we tried to get all accounts under MCC account. Previous we could get 710 accounts, but now only 1 is retrieved.

Very confused. Please help~

Python code we are using:

#!/usr/bin/env python
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""This example illustrates how to get campaign criteria.

Retrieves negative keywords in a campaign.
"""

from __future__ import absolute_import

import argparse
import six
import sys

import google.ads.google_ads.client


_DEFAULT_PAGE_SIZE = 10000

def main(client):
customer_service = client.get_service('CustomerService', version='v2')

try:
accessible_customers = customer_service.list_accessible_customers()
result_total = len(accessible_customers.resource_names)
print('Total results: %i' % result_total)

resource_names = accessible_customers.resource_names
for resource_name in resource_names:
print('Customer resource name: "%s"' % resource_name)
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)


if __name__ == '__main__':
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
auth_file = r"./configs/google-ads.yaml"
google_ads_client = (google.ads.google_ads.client.GoogleAdsClient
.load_from_storage(auth_file))

main(google_ads_client)


Response as below:


[2019-07-15 11:13:43 - INFO] Request made: ClientCustomerId: None, Host: googleads.googleapis.com:443, Method: /google.ads.googleads.v2.services.CustomerService/ListAccessibleCustomers, RequestId: CLk9yUfS0MlzJBr_gx73xw, IsFault: False, FaultMessage: None
Total results: 1
Customer resource name: "customers/6369440097"
(mkt-reportwriter)





Thanks!
Wenjun

Google Ads API Forum Advisor Prod

unread,
Jul 16, 2019, 1:50:23 PM7/16/19
to adwor...@googlegroups.com
Hello Yang,

The list_accessible_customers will return only the accounts that can be directly accessible via the credentials that are used in the API call. Your credentials might be having access to only top level manager account, hence it is resulting that account only.

In order to get the hierarchy of the accounts you have to use Customer_client resource and have to perform search query  instead. Below is the example search query for your reference. You could use this sample program in Java and replace the query. Code samples in other languages can be found here.

Search Query:"SELECT customer_client.resource_name, customer_client.client_customer, customer_client.level, customer_client.hidden FROM customer_client"

Please give it a try and let me know if you have any further questions.

Regards,
Sai Teja, Google Ads API Team

ref:_00D1U1174p._5001U8LWWE:ref

Yang Wenjun

unread,
Jul 22, 2019, 3:49:59 AM7/22/19
to AdWords API and Google Ads API Forum
Hi  Team,

So sorry to trouble again. I am using Python. 
For this requirement, which service I should use?  Should I also use "CustomerService" ?

Also, how to run the SQL query?

Did not found example for this requirement...

So sorry for such kind of low quality question~

Thanks!



在 2019年7月17日星期三 UTC+8上午1:50:23,adsapiforumadvisor写道:

Yang Wenjun

unread,
Jul 22, 2019, 4:27:15 AM7/22/19
to AdWords API and Google Ads API Forum
Hi Team,

Sorry to trouble you, but I finally know how to retrieve all clients. 
Still using GoogleAdsService, but for the search function, the first parameter just using the mcc account id.

Sample code for others if needed:

query = """
    SELECT customer_client.resource_name, customer_client.client_customer, customer_client.level, customer_client.hidden FROM customer_client
"""
mcc_account_id = "9876543210"
page_size = 10
results = ga_service.search(mcc_account_id, query=query, page_size=page_size)
for row in results:
    print(row)


在 2019年7月22日星期一 UTC+8下午3:49:59,Yang Wenjun写道:
Reply all
Reply to author
Forward
0 new messages