Below is an example of the code that is running and the results from a cProfile run:
from google.ads.googleads.client
import GoogleAdsClient
from google.ads.googleads.v13.services.services.google_ads_service
import pagers
import logging
logging.basicConfig(
level=logging.INFO
, format=
'[%(asctime)s - %(levelname)s] %(message).5000s')
logging.getLogger(
'google.ads.googleads.client').setLevel(logging.INFO)
client = GoogleAdsClient.load_from_storage(
"google-ads.yaml")
google_ads_service = client.get_service(
"GoogleAdsService", version=
'v13')
class GoogleQuery:
"""A class to query Google Ads API
Attributes:
client: An initialized GoogleAdsClient instance.
mcc_id: The Google Ads MCC ID
search_accounts_query: A query to return all search accounts
display_accounts_query: A query to return all display accounts
Methods:
get_existing_search_accounts: Returns a dictionary of existing search accounts
get_existing_display_accounts: Returns a dictionary of existing display accounts
run_gaql_query: Runs a GAQL query and returns a Pager object
"""
def __init__(
self):
self.client = client
self.mcc_id =
"XXXXXXXXXX"
self.search_accounts_query =
"""SELECT
customer_client.id,
customer_client.resource_name,
customer_client.descriptive_name,
customer_client.manager,
customer_client.applied_labels
FROM
customer_client
WHERE
customer_client.manager = false
AND customer_client.id IS NOT NULL
AND customer_client.descriptive_name LIKE '%Search%'
AND customer.status = 'ENABLED'"""
@staticmethod
def run_gaql_query(query:
str, customer_id) -> pagers.SearchPager:
"""runs GAQL query through Google Ads API
Args:
customer_id: customer ID being queried
query: the actual GAQL query being ran
Returns:
Returns a pagers.SearchPager response of the raw data
"""
return google_ads_service.search(
customer_id=customer_id
,
query=query
)
def get_existing_search_accounts(
self) ->
dict:
"""runs GAQL query through Google Ads API
Returns:
Returns a dict of {internal_id, account_name}
"""
response =
self.run_gaql_query(
self.search_accounts_query
, self.mcc_id)
return {row.customer_client.descriptive_name[-
8:]: row.customer_client.descriptive_name
for row
in response}
gaql = GoogleQuery()
gaql.get_existing_search_accounts()