I'm trying to get campaign information with Google ADS API. The sample code snippet I used is from the official googleads github repo.
import argparse
import sys
from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException
_DEFAULT_PAGE_SIZE = 1000
# [START get_campaigns_by_label]
def main(client, customer_id, label_id, page_size):
"""Demonstrates how to retrieve all campaigns by a given label ID.
Args:
client: An initialized GoogleAdsClient instance.
customer_id: A client customer ID str.
label_id: A label ID to use when searching for campaigns.
page_size: An int of the number of results to include in each page of
results.
"""
ga_service = client.get_service("GoogleAdsService")
# Creates a query that will retrieve all campaign labels with the
# specified label ID.
query = f"""
SELECT
campaign.id,
campaign.name,
label.id,
label.name
FROM campaign_label
WHERE label.id = "{label_id}"
ORDER BY campaign.id"""
# Retrieves a google.api_core.page_iterator.GRPCIterator instance
# initialized with the specified request parameters.
request = client.get_type("SearchGoogleAdsRequest")
request.customer_id = customer_id
request.query = query
request.page_size = page_size
iterator = ga_service.search(request=request)
# Iterates over all rows in all pages and prints the requested field
# values for the campaigns and labels in each row. The results include
# the campaign and label objects because these were included in the
# search criteria.
for row in iterator:
print(
f'Campaign found with ID "{row.campaign.id}", name '
f'"{row.campaign.name}", and label "{row.label.name}".'
)
if __name__ == "__main__":
# GoogleAdsClient will read the google-ads.yaml configuration file in the
# home directory if none is specified.
googleads_client = GoogleAdsClient.load_from_storage(version="v10")
parser = argparse.ArgumentParser(
description="Lists all campaigns for specified customer."
)
# The following argument(s) should be provided to run the example.
parser.add_argument(
"-c",
"--customer_id",
type=str,
required=True,
help="The Google Ads customer ID.",
)
parser.add_argument(
"-l",
"--label_id",
type=str,
required=True,
help="A label ID associated with a campaign.",
)
args = parser.parse_args()
try:
main(
googleads_client,
args.customer_id,
args.label_id,
_DEFAULT_PAGE_SIZE,
)
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)
When I run the above .py file, I get the following error.
ValueError: Specified Google Ads API version "v10" does not exist. Valid API versions are: "v8", "v7", "v6"
But when I change the version on "GoogleAdsClient.load_from_storage(version="v10")" to v8, this time I get the following error.
Request made: ClientCustomerId: XXXXXXX, Host: googleads.googleapis.com, Method: /google.ads.googleads.v8.services.GoogleAdsService/Search, RequestId: XXXXXXXXX,IsFault: True, FaultMessage: Version v8 is deprecated. Requests to this version will be blocked.
By the way, I'm sure the google-ads package is up to date. Previously, I ran the following.
pip uninstall google-ads
pip install google-ads
Thanks in advance for your help.