1616
1717
1818import argparse
19+ from typing import List
1920import sys
2021
2122from google .ads .googleads .client import GoogleAdsClient
2223from google .ads .googleads .errors import GoogleAdsException
24+ from google .ads .googleads .v20 .common .types .criteria import (
25+ KeywordInfo ,
26+ )
27+ from google .ads .googleads .v20 .resources .types .campaign_criterion import (
28+ CampaignCriterion ,
29+ )
30+ from google .ads .googleads .v20 .services .services .campaign_service import (
31+ CampaignServiceClient ,
32+ )
33+ from google .ads .googleads .v20 .services .services .campaign_criterion_service import (
34+ CampaignCriterionServiceClient ,
35+ )
36+ from google .ads .googleads .v20 .services .services .geo_target_constant_service import (
37+ GeoTargetConstantServiceClient ,
38+ )
39+ from google .ads .googleads .v20 .services .types .campaign_criterion_service import (
40+ CampaignCriterionOperation ,
41+ MutateCampaignCriteriaResponse
42+ )
43+
44+
45+ def main (
46+ client : GoogleAdsClient ,
47+ customer_id : str ,
48+ campaign_id : str ,
49+ keyword_text : str ,
50+ location_id : str ,
51+ ) -> None :
52+ campaign_criterion_service : CampaignCriterionServiceClient = client .get_service (
53+ "CampaignCriterionService"
54+ )
2355
24-
25- def main (client , customer_id , campaign_id , keyword_text , location_id ):
26- campaign_criterion_service = client .get_service ("CampaignCriterionService" )
27-
28- operations = [
56+ operations : List [CampaignCriterionOperation ] = [
2957 create_location_op (client , customer_id , campaign_id , location_id ),
3058 create_negative_keyword_op (
3159 client , customer_id , campaign_id , keyword_text
3260 ),
3361 create_proximity_op (client , customer_id , campaign_id ),
3462 ]
3563
36- campaign_criterion_response = (
64+ campaign_criterion_response : MutateCampaignCriteriaResponse = (
3765 campaign_criterion_service .mutate_campaign_criteria (
3866 customer_id = customer_id , operations = operations
3967 )
@@ -44,13 +72,19 @@ def main(client, customer_id, campaign_id, keyword_text, location_id):
4472
4573
4674# [START add_campaign_targeting_criteria]
47- def create_location_op (client , customer_id , campaign_id , location_id ):
48- campaign_service = client .get_service ("CampaignService" )
49- geo_target_constant_service = client .get_service ("GeoTargetConstantService" )
75+ def create_location_op (
76+ client : GoogleAdsClient , customer_id : str , campaign_id : str , location_id : str
77+ ) -> CampaignCriterionOperation :
78+ campaign_service : CampaignServiceClient = client .get_service ("CampaignService" )
79+ geo_target_constant_service : GeoTargetConstantServiceClient = client .get_service (
80+ "GeoTargetConstantService"
81+ )
5082
5183 # Create the campaign criterion.
52- campaign_criterion_operation = client .get_type ("CampaignCriterionOperation" )
53- campaign_criterion = campaign_criterion_operation .create
84+ campaign_criterion_operation : CampaignCriterionOperation = client .get_type (
85+ "CampaignCriterionOperation"
86+ )
87+ campaign_criterion : CampaignCriterion = campaign_criterion_operation .create
5488 campaign_criterion .campaign = campaign_service .campaign_path (
5589 customer_id , campaign_id
5690 )
@@ -67,30 +101,38 @@ def create_location_op(client, customer_id, campaign_id, location_id):
67101 # [END add_campaign_targeting_criteria]
68102
69103
70- def create_negative_keyword_op (client , customer_id , campaign_id , keyword_text ):
71- campaign_service = client .get_service ("CampaignService" )
104+ def create_negative_keyword_op (
105+ client : GoogleAdsClient , customer_id : str , campaign_id : str , keyword_text : str
106+ ) -> CampaignCriterionOperation :
107+ campaign_service : CampaignServiceClient = client .get_service ("CampaignService" )
72108
73109 # Create the campaign criterion.
74- campaign_criterion_operation = client .get_type ("CampaignCriterionOperation" )
75- campaign_criterion = campaign_criterion_operation .create
110+ campaign_criterion_operation : CampaignCriterionOperation = client .get_type (
111+ "CampaignCriterionOperation"
112+ )
113+ campaign_criterion : CampaignCriterion = campaign_criterion_operation .create
76114 campaign_criterion .campaign = campaign_service .campaign_path (
77115 customer_id , campaign_id
78116 )
79117 campaign_criterion .negative = True
80- criterion_keyword = campaign_criterion .keyword
118+ criterion_keyword : KeywordInfo = campaign_criterion .keyword
81119 criterion_keyword .text = keyword_text
82120 criterion_keyword .match_type = client .enums .KeywordMatchTypeEnum .BROAD
83121
84122 return campaign_criterion_operation
85123
86124
87125# [START add_campaign_targeting_criteria_1]
88- def create_proximity_op (client , customer_id , campaign_id ):
89- campaign_service = client .get_service ("CampaignService" )
126+ def create_proximity_op (
127+ client : GoogleAdsClient , customer_id : str , campaign_id : str
128+ ) -> CampaignCriterionOperation :
129+ campaign_service : CampaignServiceClient = client .get_service ("CampaignService" )
90130
91131 # Create the campaign criterion.
92- campaign_criterion_operation = client .get_type ("CampaignCriterionOperation" )
93- campaign_criterion = campaign_criterion_operation .create
132+ campaign_criterion_operation : CampaignCriterionOperation = client .get_type (
133+ "CampaignCriterionOperation"
134+ )
135+ campaign_criterion : CampaignCriterion = campaign_criterion_operation .create
94136 campaign_criterion .campaign = campaign_service .campaign_path (
95137 customer_id , campaign_id
96138 )
@@ -146,11 +188,13 @@ def create_proximity_op(client, customer_id, campaign_id):
146188 "https://developers.google.com/google-ads/api/reference/data/geotargets"
147189 ),
148190 )
149- args = parser .parse_args ()
191+ args : argparse . Namespace = parser .parse_args ()
150192
151193 # GoogleAdsClient will read the google-ads.yaml configuration file in the
152194 # home directory if none is specified.
153- googleads_client = GoogleAdsClient .load_from_storage (version = "v20" )
195+ googleads_client : GoogleAdsClient = GoogleAdsClient .load_from_storage (
196+ version = "v20"
197+ )
154198
155199 try :
156200 main (
0 commit comments