Utwórz kryteria kampanii

W sekcji Uzyskiwanie sugestii pokazaliśmy, jak pobrać zestaw obiektów KeywordThemeConstant za pomocą słowa lub wyrażenia. W tym kroku używamy tych samych stałych tematu słowa kluczowego, aby utworzyć zestaw obiektów CampaignCriterion, na które ma być kierowana kampania inteligentna.

Podobnie jak w przypadku tworzenia budżetu, gdy korzystaliśmy z kwoty budżetu sugerowanej przez SmartCampaignSuggestService, zalecamy tworzenie kryteriów kampanii na podstawie stałych wartości tematu słowa kluczowego pobranych z KeywordThemeConstantService w sekcji Uzyskaj sugestie.

Oto kluczowe wymagania dotyczące kryteriów kampanii inteligentnych:

W podanym niżej przykładzie stałe tematy słów kluczowych zostały przekształcone w obiekty KeywordThemeInfo przez ustawienie ich nazwy zasobu w polu KeywordThemeInfo.keyword_theme_constant. Pole campaign ustawiamy za pomocą nazwy zasobu tymczasowego ustawionej w kampanii w poprzednim kroku.

Java

/**
 * Creates {@link com.google.ads.googleads.v21.resources.CampaignCriterion} operations for add
 * each {@link KeywordThemeInfo}.
 */
private Collection<? extends MutateOperation> createCampaignCriterionOperations(
    long customerId,
    List<KeywordThemeInfo> keywordThemeInfos,
    SmartCampaignSuggestionInfo suggestionInfo) {
  List<MutateOperation> keywordThemeOperations =
      keywordThemeInfos.stream()
          .map(
              keywordTheme -> {
                MutateOperation.Builder builder = MutateOperation.newBuilder();
                builder
                    .getCampaignCriterionOperationBuilder()
                    .getCreateBuilder()
                    .setCampaign(ResourceNames.campaign(customerId, SMART_CAMPAIGN_TEMPORARY_ID))
                    .setKeywordTheme(keywordTheme);
                return builder.build();
              })
          .collect(Collectors.toList());

  List<MutateOperation> locationOperations =
      suggestionInfo.getLocationList().getLocationsList().stream()
          .map(
              location -> {
                MutateOperation.Builder builder = MutateOperation.newBuilder();
                builder
                    .getCampaignCriterionOperationBuilder()
                    .getCreateBuilder()
                    .setCampaign(ResourceNames.campaign(customerId, SMART_CAMPAIGN_TEMPORARY_ID))
                    .setLocation(location);
                return builder.build();
              })
          .collect(Collectors.toList());

  return Stream.concat(keywordThemeOperations.stream(), locationOperations.stream())
      .collect(Collectors.toList());
}
      

C#

/// <summary>
/// Creates a list of MutateOperations that create new campaign criteria.
/// </summary>
/// <param name="customerId">The Google Ads customer ID.</param>
/// <param name="keywordThemeInfos">A list of KeywordThemeInfos.</param>
/// <param name="suggestionInfo">A SmartCampaignSuggestionInfo instance.</param>
/// <returns>A list of MutateOperations that create new campaign criteria.</returns>
private IEnumerable<MutateOperation> CreateCampaignCriterionOperations(long customerId,
    IEnumerable<KeywordThemeInfo> keywordThemeInfos, SmartCampaignSuggestionInfo
    suggestionInfo)
{
    List<MutateOperation> mutateOperations = keywordThemeInfos.Select(
        keywordThemeInfo => new MutateOperation
        {
            CampaignCriterionOperation = new CampaignCriterionOperation
            {
                Create = new CampaignCriterion
                {
                    // Set the campaign ID to a temporary ID.
                    Campaign = ResourceNames.Campaign(
                        customerId, SMART_CAMPAIGN_TEMPORARY_ID),
                    // Set the keyword theme to each KeywordThemeInfo in turn.
                    KeywordTheme = keywordThemeInfo,
                }
            }
        }).ToList();

    // Create a location criterion for each location in the suggestion info.
    mutateOperations.AddRange(
        suggestionInfo.LocationList.Locations.Select(
            locationInfo => new MutateOperation()
            {
                CampaignCriterionOperation = new CampaignCriterionOperation()
                {
                    Create = new CampaignCriterion()
                    {
                        // Set the campaign ID to a temporary ID.
                        Campaign = ResourceNames.Campaign(customerId,
                            SMART_CAMPAIGN_TEMPORARY_ID),
                        // Set the location to the given location.
                        Location = locationInfo
                    }
                }
            }).ToList()
    );
    return mutateOperations;
}
      

PHP

private static function createCampaignCriterionOperations(
    int $customerId,
    array $keywordThemeInfos,
    SmartCampaignSuggestionInfo $smartCampaignSuggestionInfo
): array {
    $operations = [];
    foreach ($keywordThemeInfos as $info) {
        // Creates the campaign criterion object.
        $campaignCriterion = new CampaignCriterion([
            // Sets the campaign ID to a temporary ID.
            'campaign' =>
                ResourceNames::forCampaign($customerId, self::SMART_CAMPAIGN_TEMPORARY_ID),
            // Sets the keyword theme to the given KeywordThemeInfo.
            'keyword_theme' => $info
        ]);

        // Creates the MutateOperation that creates the campaign criterion and adds it to the
        // list of operations.
        $operations[] = new MutateOperation([
            'campaign_criterion_operation' => new CampaignCriterionOperation([
                'create' => $campaignCriterion
            ])
        ]);
    }

    // Create a location criterion for each location in the suggestion info object to add
    // corresponding location targeting to the Smart campaign.
    foreach ($smartCampaignSuggestionInfo->getLocationList()->getLocations() as $location) {
        // Creates the campaign criterion object.
        $campaignCriterion = new CampaignCriterion([
            // Sets the campaign ID to a temporary ID.
            'campaign' =>
                ResourceNames::forCampaign($customerId, self::SMART_CAMPAIGN_TEMPORARY_ID),
            // Set the location to the given location.
            'location' => $location
        ]);

        // Creates the MutateOperation that creates the campaign criterion and adds it to the
        // list of operations.
        $operations[] = new MutateOperation([
            'campaign_criterion_operation' => new CampaignCriterionOperation([
                'create' => $campaignCriterion
            ])
        ]);
    }

    return $operations;
}
      

Python

def create_campaign_criterion_operations(
    client: GoogleAdsClient,
    customer_id: str,
    keyword_theme_infos: List[KeywordThemeInfo],
    suggestion_info: SmartCampaignSuggestionInfo,
) -> List[MutateOperation]:
    """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.
        suggestion_info: A SmartCampaignSuggestionInfo instance.

    Returns:
        a list of MutateOperations that create new campaign criteria.
    """
    campaign_service: CampaignServiceClient = client.get_service(
        "CampaignService"
    )

    operations: List[MutateOperation] = []
    info: KeywordThemeInfo
    for info in keyword_theme_infos:
        mutate_operation: MutateOperation = client.get_type("MutateOperation")
        campaign_criterion_operation: CampaignCriterionOperation = (
            mutate_operation.campaign_criterion_operation
        )
        campaign_criterion: CampaignCriterion = (
            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 keyword theme to the given KeywordThemeInfo.
        campaign_criterion.keyword_theme.CopyFrom(info)
        # Add the mutate operation to the list of other operations.
        operations.append(mutate_operation)

    # Create a location criterion for each location in the suggestion info
    # object to add corresponding location targeting to the Smart campaign
    location_info: LocationInfo
    for location_info in suggestion_info.location_list.locations:
        mutate_operation: MutateOperation = client.get_type("MutateOperation")
        campaign_criterion_operation: CampaignCriterionOperation = (
            mutate_operation.campaign_criterion_operation
        )
        campaign_criterion: CampaignCriterion = (
            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 location to the given location.
        campaign_criterion.location.CopyFrom(location_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,
  suggestion_info)
  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 keyword theme to the given keyword_theme_info.
        cc.keyword_theme = info
      end
    end
  end

  # Create a location criterion for each location in the suggestion info object
  # to add corresponding location targeting to the Smart campaign
  suggestion_info.location_list.locations.each do |location|
    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 location to the given location.
        cc.location = location
      end
    end
  end

  operations
end
      

Perl

# Creates a list of MutateOperations that create new campaign criteria.
sub _create_campaign_criterion_operations {
  my ($customer_id, $keyword_theme_infos, $suggestion_info) = @_;

  my $campaign_criterion_operations = [];

  foreach my $keyword_theme_info (@$keyword_theme_infos) {
    push @$campaign_criterion_operations,
      Google::Ads::GoogleAds::V21::Services::GoogleAdsService::MutateOperation
      ->new({
        campaignCriterionOperation =>
          Google::Ads::GoogleAds::V21::Services::CampaignCriterionService::CampaignCriterionOperation
          ->new({
            create =>
              Google::Ads::GoogleAds::V21::Resources::CampaignCriterion->new({
                # Set the campaign ID to a temporary ID.
                campaign =>
                  Google::Ads::GoogleAds::V21::Utils::ResourceNames::campaign(
                  $customer_id, SMART_CAMPAIGN_TEMPORARY_ID
                  ),
                # Set the keyword theme to the given KeywordThemeInfo.
                keywordTheme => $keyword_theme_info
              })})});
  }

  # Create a location criterion for each location in the suggestion info object
  # to add corresponding location targeting to the Smart campaign.
  foreach my $location_info (@{$suggestion_info->{locationList}{locations}}) {
    push @$campaign_criterion_operations,
      Google::Ads::GoogleAds::V21::Services::GoogleAdsService::MutateOperation
      ->new({
        campaignCriterionOperation =>
          Google::Ads::GoogleAds::V21::Services::CampaignCriterionService::CampaignCriterionOperation
          ->new({
            create =>
              Google::Ads::GoogleAds::V21::Resources::CampaignCriterion->new({
                # Set the campaign ID to a temporary ID.
                campaign =>
                  Google::Ads::GoogleAds::V21::Utils::ResourceNames::campaign(
                  $customer_id, SMART_CAMPAIGN_TEMPORARY_ID
                  ),
                # Set the location to the given location.
                location => $location_info
              })})});
  }

  return $campaign_criterion_operations;
}
      

Kryteria kampanii z grupami tematycznymi wykluczających słów kluczowych

Aby wykluczyć kryterium kampanii oparte na grupie tematycznej słów kluczowych w kampanii inteligentnej, musisz użyć grupy tematycznej słów kluczowych w formie dowolnej, ustawiając pole free_form_keyword_theme w przypadku instancji KeywordThemeInfo.

Kryteria grupy tematycznej wykluczających słów kluczowych działają inaczej niż kryteria grupy tematycznej niewykluczających słów kluczowych. Kryterium tematu słowa kluczowego kierowania niewykluczającego jest dostosowywane tak, aby automatycznie kierować reklamy na inne podobne kryteria, natomiast kryterium tematu słowa kluczowego kierowania wykluczającego jest ograniczone do kierowania wykluczającego tylko na podany termin. Działanie jest takie samo jak w przypadku wykluczającego słowa kluczowego w dopasowaniu do wyrażenia.