Skip to content

Commit f63e318

Browse files
authored
Changes for release v4_0 and Deprecation of v1_0. (googleads#290)
1 parent 506cba4 commit f63e318

2,196 files changed

Lines changed: 137373 additions & 113219 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ChangeLog

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
* 6.0.0
2+
- Google Ads v4_0 release
3+
- Deprecate v1_0
4+
- Updates to various examples to standardize param names and make
5+
changes to support v4.
6+
17
* 5.1.0
28
- Google Ads v3_1 release
39
- Add add_campaign_labels example

examples/account_management/create_customer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929

3030

3131
def main(client, manager_customer_id):
32-
customer_service = client.get_service('CustomerService', version='v3')
33-
customer = client.get_type('Customer', version='v3')
32+
customer_service = client.get_service('CustomerService', version='v4')
33+
customer = client.get_type('Customer', version='v4')
3434
today = datetime.today().strftime('%Y%m%d %H:%M:%S')
3535
customer.descriptive_name.value = ('Account created with '
3636
'CustomerService on %s' % today)

examples/account_management/get_account_changes.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def resource_name_for_resource_type(resource_type, row):
5656

5757

5858
def main(client, customer_id):
59-
ads_service = client.get_service('GoogleAdsService', version='v3')
59+
ads_service = client.get_service('GoogleAdsService', version='v4')
6060
query = ('SELECT change_status.resource_name, '
6161
'change_status.last_change_date_time, '
6262
'change_status.resource_type, '
@@ -74,9 +74,9 @@ def main(client, customer_id):
7474
page_size=ADS_PAGE_SIZE)
7575

7676
resource_type_enum = (client.get_type(
77-
'ChangeStatusResourceTypeEnum', version='v3').ChangeStatusResourceType)
77+
'ChangeStatusResourceTypeEnum', version='v4').ChangeStatusResourceType)
7878
change_status_operation_enum = (client.get_type(
79-
'ChangeStatusOperationEnum', version='v3').ChangeStatusOperation)
79+
'ChangeStatusOperationEnum', version='v4').ChangeStatusOperation)
8080

8181
try:
8282
for row in response:

examples/account_management/get_account_information.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626

2727
def main(client, customer_id):
28-
customer_service = client.get_service('CustomerService', version='v3')
28+
customer_service = client.get_service('CustomerService', version='v4')
2929

3030
resource_name = customer_service.customer_path(customer_id)
3131

examples/account_management/link_manager_to_client.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ def main(client, customer_id, manager_customer_id):
3535

3636
# Extend an invitation to the client while authenticating as the manager.
3737
client_link_operation = client.get_type(
38-
'CustomerClientLinkOperation', version='v3')
38+
'CustomerClientLinkOperation', version='v4')
3939
client_link = client_link_operation.create
4040
client_link.client_customer.value = 'customers/{}'.format(customer_id)
4141
client_link.status = client.get_type(
4242
'ManagerLinkStatusEnum').PENDING
4343

4444
customer_client_link_service = client.get_service(
45-
'CustomerClientLinkService', version='v3')
45+
'CustomerClientLinkService', version='v4')
4646
response = customer_client_link_service.mutate_customer_client_link(
4747
manager_customer_id, client_link_operation)
4848
resource_name = response.results[0].resource_name
@@ -64,7 +64,7 @@ def main(client, customer_id, manager_customer_id):
6464
customer_client_link.resource_name = "{}"
6565
'''.format(resource_name)
6666

67-
ga_service = client.get_service('GoogleAdsService', version='v3')
67+
ga_service = client.get_service('GoogleAdsService', version='v4')
6868
response = ga_service.search(manager_customer_id, query=query)
6969

7070
# Since the google_ads_service.search method returns an iterator we need
@@ -74,18 +74,18 @@ def main(client, customer_id, manager_customer_id):
7474
manager_link_id = row.customer_client_link.manager_link_id
7575

7676
manager_link_operation = client.get_type(
77-
'CustomerManagerLinkOperation', version='v3')
77+
'CustomerManagerLinkOperation', version='v4')
7878
manager_link = manager_link_operation.update
7979
manager_link.resource_name.value = (
8080
'customers/{}/customerManagerLinks/{}~{}'.format(
8181
customer_id, manager_customer_id, manager_link_id))
8282

83-
manager_link.status = client.get_type('ManagerLinkStatusEnum', version='v3')
83+
manager_link.status = client.get_type('ManagerLinkStatusEnum', version='v4')
8484
field_mask = protobuf_helpers.field_mask(None, manager_link)
8585
manager_link_operation.update_mask.CopyFrom(field_mask)
8686

8787
manager_link_service = client.get_service('ManagerLinkService',
88-
version='v3')
88+
version='v4')
8989
response = manager_link_service.mutate_manager_links(
9090
manager_customer_id, [manager_link_operation])
9191
resource_name = response.results[0].resource_name

examples/account_management/list_accessible_customers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828

2929
def main(client):
30-
customer_service = client.get_service('CustomerService', version='v3')
30+
customer_service = client.get_service('CustomerService', version='v4')
3131

3232
try:
3333
accessible_customers = customer_service.list_accessible_customers()

examples/advanced_operations/add_ad_group_bid_modifier.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525

2626

2727
def main(client, customer_id, ad_group_id, bid_modifier_value):
28-
ad_group_service = client.get_service('AdGroupService', version='v3')
28+
ad_group_service = client.get_service('AdGroupService', version='v4')
2929
ad_group_bm_service = client.get_service('AdGroupBidModifierService',
30-
version='v3')
30+
version='v4')
3131

3232
# Create ad group bid modifier for mobile devices with the specified ad
3333
# group ID and bid modifier value.
@@ -44,7 +44,7 @@ def main(client, customer_id, ad_group_id, bid_modifier_value):
4444

4545
# Sets the device.
4646
ad_group_bid_modifier.device.type = client.get_type('DeviceEnum',
47-
version='v3').MOBILE
47+
version='v4').MOBILE
4848

4949
# Add the ad group bid modifier.
5050
try:

examples/advanced_operations/add_app_campaign.py

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -74,20 +74,20 @@ def _create_budget(client, customer_id):
7474
"""
7575
# Retrieves a new campaign budget operation object.
7676
campaign_budget_operation = client.get_type('CampaignBudgetOperation',
77-
version='v2')
77+
version='v4')
7878
# Creates a campaign budget.
7979
campaign_budget = campaign_budget_operation.create
8080
campaign_budget.name.value = f'Interplanetary Cruise #{uuid4()}'
8181
campaign_budget.amount_micros.value = 50000000
8282
campaign_budget.delivery_method = client.get_type(
83-
'BudgetDeliveryMethodEnum', version='v2').STANDARD
83+
'BudgetDeliveryMethodEnum', version='v4').STANDARD
8484
# An App campaign cannot use a shared campaign budget.
8585
# explicitly_shared must be set to false.
8686
campaign_budget.explicitly_shared.value = False
8787

8888
# Retrieves the campaign budget service.
8989
campaign_budget_service = client.get_service('CampaignBudgetService',
90-
version='v2')
90+
version='v4')
9191
# Submits the campaign budget operation to add the campaign budget.
9292
response = campaign_budget_service.mutate_campaign_budgets(
9393
customer_id, [campaign_budget_operation])
@@ -107,23 +107,23 @@ def _create_campaign(client, customer_id, budget_resource_name):
107107
Returns:
108108
A resource_name str for the newly created app campaign.
109109
"""
110-
campaign_service = client.get_service('CampaignService', version='v2')
111-
campaign_operation = client.get_type('CampaignOperation', version='v2')
110+
campaign_service = client.get_service('CampaignService', version='v4')
111+
campaign_operation = client.get_type('CampaignOperation', version='v4')
112112
campaign = campaign_operation.create
113113
campaign.name.value = f'Interplanetary Cruise App #{uuid4()}'
114114
campaign.campaign_budget.value = budget_resource_name
115115
# Recommendation: Set the campaign to PAUSED when creating it to
116116
# prevent the ads from immediately serving. Set to ENABLED once you've
117117
# added targeting and the ads are ready to serve.
118118
campaign.status = client.get_type(
119-
'CampaignStatusEnum', version='v2').PAUSED
119+
'CampaignStatusEnum', version='v4').PAUSED
120120
# All App campaigns have an advertising_channel_type of
121121
# MULTI_CHANNEL to reflect the fact that ads from these campaigns are
122122
# eligible to appear on multiple channels.
123123
campaign.advertising_channel_type = client.get_type(
124-
'AdvertisingChannelTypeEnum', version='v2').MULTI_CHANNEL
124+
'AdvertisingChannelTypeEnum', version='v4').MULTI_CHANNEL
125125
campaign.advertising_channel_sub_type = client.get_type(
126-
'AdvertisingChannelSubTypeEnum', version='v2').APP_CAMPAIGN
126+
'AdvertisingChannelSubTypeEnum', version='v4').APP_CAMPAIGN
127127
# Sets the target CPA to $1 / app install.
128128
#
129129
# campaign_bidding_strategy is a 'oneof' message so setting target_cpa
@@ -136,11 +136,11 @@ def _create_campaign(client, customer_id, budget_resource_name):
136136
campaign.app_campaign_setting.app_id.value = (
137137
'com.google.android.apps.adwords')
138138
campaign.app_campaign_setting.app_store = client.get_type(
139-
'AppCampaignAppStoreEnum', version='v2').GOOGLE_APP_STORE
139+
'AppCampaignAppStoreEnum', version='v4').GOOGLE_APP_STORE
140140
# Optimize this campaign for getting new users for your app.
141141
campaign.app_campaign_setting.bidding_strategy_goal_type = (client
142142
.get_type('AppCampaignBiddingStrategyGoalTypeEnum',
143-
version='v2').OPTIMIZE_INSTALLS_TARGET_INSTALL_COST)
143+
version='v4').OPTIMIZE_INSTALLS_TARGET_INSTALL_COST)
144144
# Optional fields
145145
campaign.start_date.value = (datetime.now() +
146146
timedelta(1)).strftime('%Y%m%d')
@@ -152,7 +152,7 @@ def _create_campaign(client, customer_id, budget_resource_name):
152152
# your campaign on people who are most likely to complete the
153153
# corresponding in-app actions.
154154
# selective_optimization1 = (client.get_type('StringValue',
155-
# version='v2'))
155+
# version='v4'))
156156
# selective_optimization1.value = (
157157
# 'INSERT_CONVERSION_ACTION_RESOURCE_NAME_HERE')
158158
# campaign.selective_optimization.conversion_actions.extend(
@@ -178,15 +178,15 @@ def _set_campaign_targeting_criteria(client, customer_id,
178178
campaign_resource_name: the campaign to apply targeting to
179179
"""
180180
campaign_criterion_service = client.get_service(
181-
'CampaignCriterionService', version='v2')
181+
'CampaignCriterionService', version='v4')
182182
geo_target_constant_service = client.get_service(
183-
'GeoTargetConstantService', version='v2')
183+
'GeoTargetConstantService', version='v4')
184184
language_constant_service = client.get_service(
185-
'LanguageConstantService', version='v2')
185+
'LanguageConstantService', version='v4')
186186
location_type = client.get_type(
187-
'CriterionTypeEnum', version='v2').LOCATION
187+
'CriterionTypeEnum', version='v4').LOCATION
188188
language_type = client.get_type(
189-
'CriterionTypeEnum', version='v2').LANGUAGE
189+
'CriterionTypeEnum', version='v4').LANGUAGE
190190

191191
campaign_criterion_operations = []
192192
# Creates the location campaign criteria.
@@ -197,7 +197,7 @@ def _set_campaign_targeting_criteria(client, customer_id,
197197
for location_id in ['21137', # California
198198
'2484']: # Mexico
199199
campaign_criterion_operation = client.get_type(
200-
'CampaignCriterionOperation', version='v2')
200+
'CampaignCriterionOperation', version='v4')
201201
campaign_criterion = campaign_criterion_operation.create
202202
campaign_criterion.campaign.value = campaign_resource_name
203203
campaign_criterion.type = location_type
@@ -209,7 +209,7 @@ def _set_campaign_targeting_criteria(client, customer_id,
209209
for language_id in ['1000', # English
210210
'1003']: # Spanish
211211
campaign_criterion_operation = client.get_type(
212-
'CampaignCriterionOperation', version='v2')
212+
'CampaignCriterionOperation', version='v4')
213213
campaign_criterion = campaign_criterion_operation.create
214214
campaign_criterion.campaign.value = campaign_resource_name
215215
campaign_criterion.type = language_type
@@ -235,18 +235,18 @@ def _create_ad_group(client, customer_id, campaign_resource_name):
235235
Returns:
236236
A resource_name str for the newly created ad group.
237237
"""
238-
ad_group_service = client.get_service('AdGroupService', version='v2')
238+
ad_group_service = client.get_service('AdGroupService', version='v4')
239239

240240
# Creates the ad group.
241241
# Note that the ad group type must not be set.
242242
# Since the advertising_channel_sub_type is APP_CAMPAIGN,
243243
# 1- you cannot override bid settings at the ad group level.
244244
# 2- you cannot add ad group criteria.
245-
ad_group_operation = client.get_type('AdGroupOperation', version='v2')
245+
ad_group_operation = client.get_type('AdGroupOperation', version='v4')
246246
ad_group = ad_group_operation.create
247247
ad_group.name.value = f'Earth to Mars cruises {uuid4()}'
248248
ad_group.status = client.get_type(
249-
'AdGroupStatusEnum', version='v2').ENABLED
249+
'AdGroupStatusEnum', version='v4').ENABLED
250250
ad_group.campaign.value = campaign_resource_name
251251

252252
ad_group_response = ad_group_service.mutate_ad_groups(
@@ -266,11 +266,11 @@ def _create_app_ad(client, customer_id, ad_group_resource_name):
266266
ad_group_resource_name: the ad group where the ad will be added.
267267
"""
268268
# Creates the ad group ad.
269-
ad_group_ad_service = client.get_service('AdGroupAdService', version='v2')
270-
ad_group_ad_operation = client.get_type('AdGroupAdOperation', version='v2')
269+
ad_group_ad_service = client.get_service('AdGroupAdService', version='v4')
270+
ad_group_ad_operation = client.get_type('AdGroupAdOperation', version='v4')
271271
ad_group_ad = ad_group_ad_operation.create
272272
ad_group_ad.status = client.get_type(
273-
'AdGroupAdStatusEnum', version='v2').ENABLED
273+
'AdGroupAdStatusEnum', version='v4').ENABLED
274274
ad_group_ad.ad_group.value = ad_group_resource_name
275275
# ad_data is a 'oneof' message so setting app_ad
276276
# is mutually exclusive with ad data fields such as
@@ -293,7 +293,7 @@ def _create_app_ad(client, customer_id, ad_group_resource_name):
293293

294294

295295
def _create_ad_text_asset(client, text):
296-
ad_text_asset = client.get_type('AdTextAsset', version='v2')
296+
ad_text_asset = client.get_type('AdTextAsset', version='v4')
297297
ad_text_asset.text.value = text
298298
return ad_text_asset
299299

0 commit comments

Comments
 (0)