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.

Tag:google-ads-api, python

3 comments.

  1. dorian

    It still does look like you have an old version of google-ads installed. Can you start a Python interpreter and do:

    >>>import google.ads.googleads >>>print(google.ads.googleads.VERSION)

    Latest version would print '17.0.0'. You'll need at least version 15 in order to be able to use v10 of the API. From the supported API version list in the error you provided, it seems you have something between version 12 and 14 of the library installed.

    1. Ricky McMaster

      This was very useful to me, thanks! However, along with the client library version (which is what is output here), I'd also like to output the version of the API itself. Do you know if this is possible?

  2. Ricky McMaster

    I had a similar issue, and what worked for me is the step you have already taken:

    pip uninstall google-ads pip install google-ads

    However, what you also need to do is remove the complete reference to the version in the script (in your case version="v10"). The argument itself is no longer valid.

Add a new comment.