Skip to content

Commit

Permalink
Changes for release v14.
Browse files Browse the repository at this point in the history
  • Loading branch information
BenRKarl committed Jun 8, 2023
1 parent 0739716 commit 3f01c1b
Show file tree
Hide file tree
Showing 1,477 changed files with 210,310 additions and 520 deletions.
16 changes: 16 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
* 21.2.0
- Google Ads API v14 release.
- Lower minimum version requirement for dependencies:
- google-api-core
- googleapis-common-protos
- proto-plus
- protobuf.
- Update unit tests to run with lowest-supported Google-maintained dependencies.
- Update upload_conversion_enhancement example with recommended placeholder names.
- Update place_id field to place_ids in add_performance_max_for_travel_goals_campaign example.
- Add add_things_to_do_ad example.
- Remove examples:
- generate_forecast_metrics
- generate_historical_metrics
- get_campaign_criterion_bid_modifier_simulations

* 21.1.0
- Google Ads API v13_1 release.
- Add Python versions 3.8, 3.9, and 3.10 to list of classifiers.
Expand Down
20 changes: 13 additions & 7 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,16 @@ configuration option that specifies which type of protobuf message to use. For
information on why this flag is important and what the differences are between
the two message types, see the `Protobuf Messages`_ guide.

Minimum Dependency Versions
---------------------------
Version `21.2.0`_ of this library *lowered* the minimum version for some
dependencies in order to improve compatibility with other applications and
packages that rely on `protobuf`_ version 3.

Note that using protobuf 3 will cause performance degredations in this library,
so you may experience slower response times. For optimal performance we
recommend using protobuf versions 4.21.5 or higher.

Miscellaneous
-------------

Expand Down Expand Up @@ -63,11 +73,7 @@ Authors
.. _Andrew Burke: https://github.com/AndrewMBurke
.. _Laura Chevalier: https://github.com/laurachevalier4
.. _Bob Hancock: https://github.com/bobhancock
.. _12.0.0: https://pypi.org/project/google-ads/12.0.0/
.. _14.0.0: https://pypi.org/project/google-ads/14.0.0/
.. _15.0.0: https://pypi.org/project/google-ads/15.0.0/
.. _v9: https://developers.google.com/google-ads/api/reference/rpc/v9/overview
.. _v10: https://developers.google.com/google-ads/api/reference/rpc/v10/overview
.. _EOL: https://endoflife.date/python
.. _Google Ads Developer Blog: https://ads-developers.googleblog.com/
.. _14.0.0: https://pypi.org/project/google-ads/14.0.0/.. _15.0.0: https://pypi.org/project/google-ads/15.0.0/
.. _21.2.0: https://pypi.org/project/google-ads/21.2.0/
.. _Protobuf Messages: https://developers.google.com/google-ads/api/docs/client-libs/python/protobuf-messages
.. _protobuf: https://pypi.org/project/protobuf/
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ def update_merchant_center_link_status(
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=("Approves a Merchant Center link request.")
Expand Down
2 changes: 1 addition & 1 deletion examples/account_management/create_customer.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def main(client, manager_customer_id):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=("Creates a new client under the given manager.")
Expand Down
2 changes: 1 addition & 1 deletion examples/account_management/get_account_hierarchy.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ def print_account_hierarchy(
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description="This example gets the account hierarchy of the specified "
Expand Down
2 changes: 1 addition & 1 deletion examples/account_management/get_account_information.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def main(client, customer_id):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
2 changes: 1 addition & 1 deletion examples/account_management/get_change_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ def main(client, customer_id):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description="This example gets specific details about the most recent "
Expand Down
2 changes: 1 addition & 1 deletion examples/account_management/get_change_summary.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ def main(client, customer_id):
if __name__ == "__main__":
# GoogleAdsClient will read a google-ads.yaml configuration file in the
# home directory if none is specified.
googleads_client = GoogleAdsClient.load_from_storage(version="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
2 changes: 1 addition & 1 deletion examples/account_management/get_pending_invitations.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def main(client, customer_id):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=("Retrieves pending invitations for a customer account.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def main(client, customer_id, email_address, access_role):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
2 changes: 1 addition & 1 deletion examples/account_management/link_manager_to_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ def main(client, customer_id, manager_customer_id):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
2 changes: 1 addition & 1 deletion examples/account_management/list_accessible_customers.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def main(client):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

try:
main(googleads_client)
Expand Down
2 changes: 1 addition & 1 deletion examples/account_management/reject_merchant_center_link.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ def remove_merchant_center_link(
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
2 changes: 1 addition & 1 deletion examples/account_management/update_user_access.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ def modify_user_access(client, customer_id, user_id, access_role):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description="This code example updates the access role of a user, "
Expand Down
2 changes: 1 addition & 1 deletion examples/advanced_operations/add_ad_customizer.py
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ def create_ad_with_customizations(
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
2 changes: 1 addition & 1 deletion examples/advanced_operations/add_ad_group_bid_modifier.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ def main(client, customer_id, ad_group_id, bid_modifier_value):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
2 changes: 1 addition & 1 deletion examples/advanced_operations/add_app_campaign.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ def create_ad_text_asset(client, text):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
2 changes: 1 addition & 1 deletion examples/advanced_operations/add_bidding_data_exclusion.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def main(client, customer_id, start_date_time, end_date_time):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description="Adds a data exclusion for conversions in Smart Bidding "
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ def main(
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description="Adds a seasonality adjustment for conversions in Smart "
Expand Down
2 changes: 1 addition & 1 deletion examples/advanced_operations/add_call_ad.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def main(
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=("Adds a call extension to a specific account.")
Expand Down
2 changes: 1 addition & 1 deletion examples/advanced_operations/add_display_upload_ad.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ def create_display_upload_ad_group_ad(
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description="Adds a display upload ad to a given ad group."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ def add_dsa_target(client, customer_id, ad_group_id, dsa_page_url_label):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(description=(
"Adds a page feed with URLs for a Dynamic Search Ads campaign"
Expand Down
2 changes: 1 addition & 1 deletion examples/advanced_operations/add_dynamic_search_ads.py
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ def add_webpage_criterion(client, customer_id, ad_group_resource_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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -645,7 +645,7 @@ def create_asset_group_signal_operation(client, customer_id, audience_id):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=("Creates a Performance Max campaign.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -521,7 +521,7 @@ def add_images(client, customer_id, campaign_resource_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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=("Creates a Responsive Search Ad for specified customer.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ def create_responsive_search_ad_with_customization(
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
2 changes: 1 addition & 1 deletion examples/advanced_operations/add_smart_campaign.py
Original file line number Diff line number Diff line change
Expand Up @@ -811,7 +811,7 @@ def print_response_details(response):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(description=("Creates a Smart campaign."))
# The following argument(s) should be provided to run the example.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ def handle_googleads_exception(exception):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ def handle_googleads_exception(exception):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
2 changes: 1 addition & 1 deletion examples/advanced_operations/get_ad_group_bid_modifiers.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ def main(client, customer_id, page_size, ad_group_id=None):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description="List ad group bid modifiers for specified customer."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ def attach_cross_account_bidding_strategy_to_campaign(
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(description=("Creates a Smart campaign."))
# The following argument(s) should be provided to run the example.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ def handle_googleads_exception(exception):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description="Adds a campaign for specified customer."
Expand Down
2 changes: 1 addition & 1 deletion examples/basic_operations/add_ad_groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def main(client, customer_id, campaign_id):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description="Adds an ad group for specified customer and campaign id."
Expand Down
2 changes: 1 addition & 1 deletion examples/basic_operations/add_campaigns.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ def handle_googleads_exception(exception):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description="Adds a campaign for specified customer."
Expand Down
2 changes: 1 addition & 1 deletion examples/basic_operations/add_keywords.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def main(client, customer_id, ad_group_id, keyword_text):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
2 changes: 1 addition & 1 deletion examples/basic_operations/add_responsive_search_ad.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def create_ad_text_asset(client, text, pinned_field=None):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
2 changes: 1 addition & 1 deletion examples/basic_operations/get_ad_groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def main(client, customer_id, page_size, campaign_id=None):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description="List ad groups for specified customer."
Expand Down
2 changes: 1 addition & 1 deletion examples/basic_operations/get_campaigns.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def main(client, customer_id):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description="Lists all campaigns for specified customer."
Expand Down
2 changes: 1 addition & 1 deletion examples/basic_operations/get_expanded_text_ads.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ def main(client, customer_id, ad_group_id=None):
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description="List ad groups for specified customer."
Expand Down
2 changes: 1 addition & 1 deletion examples/basic_operations/get_keywords.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ def main(
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="v13")
googleads_client = GoogleAdsClient.load_from_storage(version="v14")

parser = argparse.ArgumentParser(
description=(
Expand Down
Loading

0 comments on commit 3f01c1b

Please sign in to comment.