Criar ajustes periódicos

Os ajustes periódicos são uma ferramenta avançada que pode ser usada para informar dar lances com base nas mudanças esperadas nas taxas de conversão para eventos futuros. Para Para mais detalhes sobre como os ajustes periódicos funcionam, consulte o artigo sobre periodicidade página de ajuda sobre ajustes.

Criar ajuste periódico de maneira programática usando BiddingSeasonalityAdjustments

Escopo

BiddingSeasonalityAdjustments têm uma permissão obrigatória scope, que pode ser definido como valores a seguir. Outras opções de configuração específicas do escopo foram definidas de acordo com o escopo usado.

  • CAMPAIGN: o ajuste é aplicado a campanhas específicas. Defina o campaigns a uma lista de nomes de recursos de campanha aos quais este será aplicado.
    • O número máximo de campanhas por BiddingSeasonalityAdjustment é 2.000.
  • CHANNEL: o ajuste é aplicado a campanhas que pertencem a grupos tipos de canal. Defina o advertising_channel_types campo a uma lista de AdvertisingChannelTypes à qual este será aplicado.

Dispositivos

Além do escopo, os ajustes periódicos podem ser configurados com uma lista opcional de tipos de dispositivos aos quais o ajuste será aplicado. Se devices estiver definido, o o ajuste periódico só será aplicado ao tráfego do dispositivo especificado tipos Se não for especificado, todos os tipos de dispositivos serão incluídos no ajuste.

Datas, horas e modificador de taxa de conversão

Além do escopo e dos dispositivos opcionais, cada ajuste periódico tem start_date_time e end_date_time e um conversion_rate_modifier. A data e as horas definem o intervalo futuro ao qual o ajuste se aplica, e o modificador é o multiplicador esperado da taxa de conversão a ser aplicado. A data os horários estão no fuso horário da conta.

Exemplo

O exemplo a seguir mostra como criar um ajuste periódico com escopo CHANNEL. As seções comentadas demonstram como especificar campanhas se você precisa definir um escopo CAMPAIGN.

Java

BiddingSeasonalityAdjustment seasonalityAdjustment =
    BiddingSeasonalityAdjustment.newBuilder()
        // A unique name is required for every seasonality adjustment.
        .setName("Seasonality adjustment #" + getPrintableDateTime())
        // The CHANNEL scope applies the conversionRateModifier to all campaigns of specific
        // advertising channel types. In this example, the conversionRateModifier will only
        // apply to Search campaigns. Use the CAMPAIGN scope to instead limit the scope to
        // specific campaigns.
        .setScope(SeasonalityEventScope.CHANNEL)
        .addAdvertisingChannelTypes(AdvertisingChannelType.SEARCH)
        // If setting scope CAMPAIGN, add individual campaign resource name(s) according to
        // the commented out line below.
        // .addCampaigns("INSERT_CAMPAIGN_RESOURCE_NAME_HERE")
        .setStartDateTime(startDateTime)
        .setEndDateTime(endDateTime)
        // The conversionRateModifier is the expected future conversion rate change. When this
        // field is unset or set to 1.0, no adjustment will be applied to traffic. The allowed
        // range is 0.1 to 10.0.
        .setConversionRateModifier(conversionRateModifier)
        .build();

BiddingSeasonalityAdjustmentOperation operation =
    BiddingSeasonalityAdjustmentOperation.newBuilder()
        .setCreate(seasonalityAdjustment)
        .build();

MutateBiddingSeasonalityAdjustmentsResponse response =
    seasonalityAdjustmentServiceClient.mutateBiddingSeasonalityAdjustments(
        customerId.toString(), ImmutableList.of(operation));
System.out.printf(
    "Added seasonality adjustment with resource name: %s%n",
    response.getResults(0).getResourceName());
      

C#

BiddingSeasonalityAdjustment seasonalityAdjustment =
    new BiddingSeasonalityAdjustment()
    {
        // A unique name is required for every seasonality adjustment.
        Name = "Seasonality adjustment #" + ExampleUtilities.GetRandomString(),
        // The CHANNEL scope applies the conversionRateModifier to all campaigns of
        // specific advertising channel types. In this example, the
        // conversionRateModifier will only apply to Search campaigns. Use the
        // CAMPAIGN scope to instead limit the scope to specific campaigns.
        Scope = SeasonalityEventScope.Channel,
        AdvertisingChannelTypes = { AdvertisingChannelType.Search },
        // If setting scope CAMPAIGN, add individual campaign resource name(s)
        // according to the commented out line below.
        // Campaigns = { "INSERT_CAMPAIGN_RESOURCE_NAME_HERE" },
        // The date range should be less than 14 days.
        StartDateTime = startDateTime,
        EndDateTime = endDateTime,
        // The conversionRateModifier is the expected future conversion rate change.
        // When this field is unset or set to 1.0, no adjustment will be applied to
        // traffic. The allowed range is 0.1 to 10.0.
        ConversionRateModifier = conversionRateModifier
    };

BiddingSeasonalityAdjustmentOperation operation =
    new BiddingSeasonalityAdjustmentOperation()
    {
        Create = seasonalityAdjustment
    };

try
{
    MutateBiddingSeasonalityAdjustmentsResponse response =
        biddingSeasonalityAdjustmentService.MutateBiddingSeasonalityAdjustments(
            customerId.ToString(), new[] { operation });
    Console.WriteLine($"Added seasonality adjustment with resource name: " +
        $"{response.Results[0].ResourceName}");
}
catch (GoogleAdsException e)
{
    Console.WriteLine("Failure:");
    Console.WriteLine($"Message: {e.Message}");
    Console.WriteLine($"Failure: {e.Failure}");
    Console.WriteLine($"Request ID: {e.RequestId}");
    throw;
}
      

PHP

// Creates a bidding seasonality adjustment.
$seasonalityAdjustment = new BiddingSeasonalityAdjustment([
    // A unique name is required for every seasonality adjustment.
    'name' => 'Seasonality adjustment #' . Helper::getPrintableDatetime(),
    // The CHANNEL scope applies the conversionRateModifier to all campaigns of specific
    // advertising channel types. In this example, the conversionRateModifier will only
    // apply to Search campaigns. Use the CAMPAIGN scope to instead limit the scope to
    // specific campaigns.
    'scope' => SeasonalityEventScope::CHANNEL,
    'advertising_channel_types' => [AdvertisingChannelType::SEARCH],
    // If setting scope CAMPAIGN, add individual campaign resource name(s) according to
    // the commented out line below.
    // 'campaigns' => ['INSERT_CAMPAIGN_RESOURCE_NAME_HERE'],
    'start_date_time' => $startDateTime,
    'end_date_time' => $endDateTime,
    // The conversionRateModifier is the expected future conversion rate change. When this
    // field is unset or set to 1.0, no adjustment will be applied to traffic. The allowed
    // range is 0.1 to 10.0.
    'conversion_rate_modifier' => $conversionRateModifier
]);

// Creates a bidding seasonality adjustment operation.
$biddingSeasonalityAdjustmentOperation = new BiddingSeasonalityAdjustmentOperation();
$biddingSeasonalityAdjustmentOperation->setCreate($seasonalityAdjustment);

// Submits the bidding seasonality adjustment operation to add the bidding seasonality
// adjustment.
$biddingSeasonalityAdjustmentServiceClient =
    $googleAdsClient->getBiddingSeasonalityAdjustmentServiceClient();
$response = $biddingSeasonalityAdjustmentServiceClient->mutateBiddingSeasonalityAdjustments(
    MutateBiddingSeasonalityAdjustmentsRequest::build(
        $customerId,
        [$biddingSeasonalityAdjustmentOperation]
    )
);

printf(
    "Added seasonality adjustment with resource name: '%s'.%s",
    $response->getResults()[0]->getResourceName(),
    PHP_EOL
);
      

Python

bidding_seasonality_adjustment_service = client.get_service(
    "BiddingSeasonalityAdjustmentService"
)
operation = client.get_type("BiddingSeasonalityAdjustmentOperation")
bidding_seasonality_adjustment = operation.create
# A unique name is required for every seasonality adjustment.
bidding_seasonality_adjustment.name = f"Seasonality adjustment #{uuid4()}"
# The CHANNEL scope applies the conversion_rate_modifier to all campaigns of
# specific advertising channel types. In this example, the
# conversion_rate_modifier will only apply to Search campaigns. Use the
# CAMPAIGN scope to instead limit the scope to specific campaigns.
bidding_seasonality_adjustment.scope = (
    client.enums.SeasonalityEventScopeEnum.CHANNEL
)
bidding_seasonality_adjustment.advertising_channel_types.append(
    client.enums.AdvertisingChannelTypeEnum.SEARCH
)
# If setting scope CAMPAIGN, add individual campaign resource name(s)
# according to the commented out line below.
#
# bidding_seasonality_adjustment.campaigns.append(
#     "INSERT_CAMPAIGN_RESOURCE_NAME_HERE"
# )

bidding_seasonality_adjustment.start_date_time = start_date_time
bidding_seasonality_adjustment.end_date_time = end_date_time
# The conversion_rate_modifier is the expected future conversion rate
# change. When this field is unset or set to 1.0, no adjustment will be
# applied to traffic. The allowed range is 0.1 to 10.0.
bidding_seasonality_adjustment.conversion_rate_modifier = (
    conversion_rate_modifier
)

response = bidding_seasonality_adjustment_service.mutate_bidding_seasonality_adjustments(
    customer_id=customer_id, operations=[operation]
)

resource_name = response.results[0].resource_name

print(f"Added seasonality adjustment with resource name: '{resource_name}'")
      

Ruby

client = Google::Ads::GoogleAds::GoogleAdsClient.new

operation = client.operation.create_resource.bidding_seasonality_adjustment do |bsa|
  # A unique name is required for every seasonality adjustment.
  bsa.name = "Seasonality Adjustment #{(Time.new.to_f * 1000).to_i}"

  # The CHANNEL scope applies the conversion_rate_modifier to all campaigns
  # of specific advertising channel types. In this example, the
  # conversion_rate_modifier will only apply to Search campaigns. Use the
  # CAMPAIGN scope to instead limit the scope to specific campaigns.
  bsa.scope = :CHANNEL
  bsa.advertising_channel_types << :SEARCH

  # If setting scope CAMPAIGN, add individual campaign resource name(s)
  # according to the commented out line below.
  #
  # bsa.campaigns << "INSERT_CAMPAIGN_RESOURCE_NAME_HERE"

  bsa.start_date_time = start_date_time
  bsa.end_date_time = end_date_time

  # The conversion_rate_modifier is the expected future conversion rate
  # change. When this field is unset or set to 1.0, no adjustment will be
  # applied to traffic. The allowed range is 0.1 to 10.0.
  bsa.conversion_rate_modifier = conversion_rate_modifier
end

response = client.service.bidding_seasonality_adjustment.mutate_bidding_seasonality_adjustments(
  customer_id: customer_id,
  operations: [operation],
)

puts "Added seasonality adjustment with resource name #{response.results.first.resource_name}"
      

Perl

my $seasonality_adjustment =
  Google::Ads::GoogleAds::V17::Resources::BiddingSeasonalityAdjustment->new({
    # A unique name is required for every seasonality adjustment.
    name => "Seasonality adjustment #" . uniqid(),
    # The CHANNEL scope applies the conversion_rate_modifier to all campaigns
    # of specific advertising channel types. In this example, the conversion_rate_modifier
    # will only apply to Search campaigns. Use the CAMPAIGN scope to instead
    # limit the scope to specific campaigns.
    scope                   => CHANNEL,
    advertisingChannelTypes => [SEARCH],
    # If setting scope CAMPAIGN, add individual campaign resource name(s)
    # according to the commented out line below.
    # campaigns     => ["INSERT_CAMPAIGN_RESOURCE_NAME_HERE"],
    startDateTime => $start_date_time,
    endDateTime   => $end_date_time,
    # The conversion_rate_modifier is the expected future conversion rate change.
    # When this field is unset or set to 1.0, no adjustment will be applied to traffic.
    # The allowed range is 0.1 to 10.0.
    conversionRateModifier => $conversion_rate_modifier
  });

my $operation =
  Google::Ads::GoogleAds::V17::Services::BiddingSeasonalityAdjustmentService::BiddingSeasonalityAdjustmentOperation
  ->new({
    create => $seasonality_adjustment
  });

my $response = $api_client->BiddingSeasonalityAdjustmentService()->mutate({
    customerId => $customer_id,
    operations => [$operation]});

printf "Added seasonality adjustment with resource name: '%s'.\n",
  $response->{results}[0]{resourceName};