Create campaign criteria

In the get recommendations 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:

In the below example the keyword theme constants have been converted to KeywordThemeInfo objects by setting their resource name onto the KeywordThemeInfo.keyword_theme_constant field. We set the campaign field using the temporary resource name set on the campaign in the previous step.

Python

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

Ruby

# 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