section we demonstrated how to retrieve a set of
KeywordThemeConstant objects using a
word or phrase. In this step we use those same keyword theme constants to create
a set of
CampaignCriterion objects for the
Smart campaign to target.
Key requirements for Smart campaign criteria:
- Smart campaigns only support the following criterion types:
- For location targeting, if a location is not specified targeting will default to include all regions.
locationcriteria can be associated with a Smart campaign, but only one
proximitycriterion can be used.
- It's not possible to use both
In the below example the keyword theme constants have been converted to
KeywordThemeInfo objects by setting their resource
name onto the
field. We set the
campaign field using the
temporary resource name
set on the campaign in the previous step.
def _create_campaign_criterion_operations( client, customer_id, keyword_theme_infos ): """Creates a list of MutateOperations that create new campaign criteria. Args: client: an initialized GoogleAdsClient instance. customer_id: a client customer ID. keyword_theme_infos: a list of KeywordThemeInfos. Returns: a list of MutateOperations that create new campaign criteria. """ campaign_service = client.get_service("CampaignService") operations =  for info in keyword_theme_infos: mutate_operation = client.get_type("MutateOperation") campaign_criterion = ( mutate_operation.campaign_criterion_operation.create ) # Set the campaign ID to a temporary ID. campaign_criterion.campaign = campaign_service.campaign_path( customer_id, _SMART_CAMPAIGN_TEMPORARY_ID ) # Set the criterion type to KEYWORD_THEME. campaign_criterion.type_ = client.get_type( "CriterionTypeEnum" ).CriterionType.KEYWORD_THEME # Set the keyword theme to the given KeywordThemeInfo. campaign_criterion.keyword_theme = info # Add the mutate operation to the list of other operations. operations.append(mutate_operation) return operations
# Creates a list of mutate_operations that create new campaign criteria. def create_campaign_criterion_operations( client, customer_id, keyword_theme_infos) operations =  keyword_theme_infos.each do |info| operations << client.operation.mutate do |m| m.campaign_criterion_operation = client.operation.create_resource.campaign_criterion do |cc| # Sets the campaign ID to a temporary ID. cc.campaign = client.path.campaign( customer_id, SMART_CAMPAIGN_TEMPORARY_ID) # Sets the criterion type to KEYWORD_THEME. cc.type = :KEYWORD_THEME # Sets the keyword theme to the given keyword_theme_info. cc.keyword_theme = info end end end operations end