Lance com base na parcela de impressões: conta única

Ícone de lances

Alguns anunciantes querem que os anúncios apareçam com a maior frequência possível nos resultados de pesquisa, seja qual for o custo. Outros escolhem uma parcela de impressões mais modesta, que custa menos, mas oferece visibilidade suficiente para os anúncios mesmo assim.

Com o script "Definir lances para parcela de impressões", você pode alcançar suas metas de parcela de impressões de forma incremental. O script analisa suas palavras-chave, encontra a que mais precisa de ajuste e aumenta ou diminui os lances para afetar a frequência com que elas são exibidas nos resultados da pesquisa.

Agendamento

O script considera as estatísticas dos últimos sete dias. Agende-o para ser executado Semanalmente.

Como funciona

O script faz duas ações:

  • Primeiro, ele encontra palavras-chave cuja parcela de impressões é muito baixa e aumenta seus lances.
  • Em seguida, o script encontra todas as palavras-chave com CTR (taxa de cliques) superior a 1% e parcela de impressões muito alta e diminui os lances

Um único iterador só pode buscar 50.000 palavras-chave. Consequentemente, no máximo 50.000 lances serão aumentados e 50.000 lances serão reduzidos por execução de script.

Você deve ajustar o lance com cuidado de acordo com a situação da sua conta. Convém manter fatores além da CTR ao decidir ajustar os lances das suas palavras-chave.

Parâmetros

Atualize os seguintes parâmetros no script:

  • TARGET_IMPRESSION_SHARE especifica a parcela de impressões que você pretende alcançar.
  • Quando a parcela de impressões da palavra-chave estiver em TOLERANCE em TARGET_IMPRESSION_SHARE, os lances não serão mais atualizados. Não queremos que o lance de uma palavra-chave aumente e diminua porque a parcela de impressões dela é de 49 x 51.
  • BID_ADJUSTMENT_COEFFICIENT especifica o multiplicador a ser usado durante o ajuste dos lances de palavras-chave. Quanto maior for o multiplicador, mais agressiva será a alteração do lance

Configuração

  • Crie um novo script com o código-fonte abaixo.
  • Não se esqueça de atualizar TARGET_IMPRESSION_SHARE, TOLERANCE e BID_ADJUSTMENT_COEFFICIENT no código abaixo.
  • Observe atentamente as condições usadas para buscar as palavras-chave.
  • Agende o script para ser executado Semanalmente.

Código-fonte

// Copyright 2015, Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/**
 * @name Bid To Impression Share
 *
 * @overview The Bid To Impression Share script adjusts your bids and allows you
 *     to steer ads in an advertiser account into a desired impression share in
 *     the search results. See
 *     https://developers.google.com/google-ads/scripts/docs/solutions/bid-to-impression-share
 *     for more details.
 *
 * @author Google Ads Scripts Team [adwords-scripts@googlegroups.com]
 *
 * @version 3.0
 *
 * @changelog
 * - version 3.0
 *   - Updated to use new Google Ads Scripts features.
 * - version 2.0.1
 *   - Fixed logic when determining which keywords to raise and lower.
 * - version 2.0.0
 *   - Refactored to target impression share rather than position.
 * - version 1.0.1
 *   - Refactored to improve readability. Added documentation.
 * - version 1.0
 *   - Released initial version.
 */

// Ad impression share you are trying to achieve, representated as a percentage.
const TARGET_IMPRESSION_SHARE = 0.5;

// Once the keywords fall within TOLERANCE of TARGET_IMPRESSION_SHARE,
// their bids will no longer be adjusted. Represented as a percentage.
const TOLERANCE = 0.05;

// How much to adjust the bids.
const BID_ADJUSTMENT_COEFFICIENT = 1.05;

/**
 * Main function that lowers and raises keywords' CPC to move closer to
 * target impression share.
 */
function main() {
  raiseKeywordBids();
  lowerKeywordBids();
}

/**
 * Increases the CPC of keywords that are below the target impression share.
 */
function raiseKeywordBids() {
  const keywordsToRaise = getKeywordsToRaise();
  for (const keyword of keywordsToRaise) {
    keyword.bidding().setCpc(getIncreasedCpc(keyword.bidding().getCpc()));
  }
 }

/**
 * Decreases the CPC of keywords that are above the target impression share.
 */
function lowerKeywordBids() {
 const keywordsToLower = getKeywordsToLower();
 for (const keyword of keywordsToLower) {
   keyword.bidding().setCpc(getDecreasedCpc(keyword.bidding().getCpc()));
 }
}

/**
 * Increases a given CPC using the bid adjustment coefficient.
 * @param {number} cpc - the CPC to increase
 * @return {number} the new CPC
 */
function getIncreasedCpc(cpc) {
  return cpc * BID_ADJUSTMENT_COEFFICIENT;
}

/**
 * Decreases a given CPC using the bid adjustment coefficient.
 * @param {number} cpc - the CPC to decrease
 * @return {number} the new CPC
 */
function getDecreasedCpc(cpc) {
  return cpc / BID_ADJUSTMENT_COEFFICIENT;
}

/**
 * Gets an iterator of the keywords that need to have their CPC raised.
 * @return {!Iterator} an iterator of the keywords
 */
function getKeywordsToRaise() {
  // Condition to raise bid: Average impression share is worse (less) than
  // target - tolerance
  return AdsApp.keywords()
      .withCondition(`ad_group_criterion.status = ENABLED`)
      .withCondition(
          `metrics.search_impression_share < ${TARGET_IMPRESSION_SHARE - TOLERANCE}`)
      .orderBy(`metrics.search_impression_share ASC`)
      .forDateRange(`LAST_7_DAYS`)
      .get();
}

/**
 * Gets an iterator of the keywords that need to have their CPC lowered.
 * @return {!Iterator} an iterator of the keywords
 */
function getKeywordsToLower() {
  // Conditions to lower bid: Ctr greater than 1% AND
  // average impression share better (greater) than target + tolerance
  return AdsApp.keywords()
      .withCondition(`metrics.ctr > 0.01`)
      .withCondition(
          `metrics.search_impression_share > ${TARGET_IMPRESSION_SHARE + TOLERANCE}`)
      .withCondition(`ad_group_criterion.status = ENABLED`)
      .orderBy(`metrics.search_impression_share DESC`)
      .forDateRange(`LAST_7_DAYS`)
      .get();
}