Ставка к проценту полученных показов – один аккаунт

Значок ставок

Некоторые рекламодатели хотят, чтобы их объявления появлялись в результатах поиска как можно чаще, независимо от стоимости. Другие выбирают более скромный процент показов, который стоит меньше, но, тем не менее, обеспечивает достаточную видимость их рекламы.

Скрипт Bid To Impression Share позволяет постепенно достигать целевых показателей процента полученных показов. Скрипт просматривает ваши ключевые слова, находит те, которые больше всего нуждаются в корректировке, и повышает или понижает их ставки, чтобы повлиять на частоту их показа в результатах поиска.

Планирование

Скрипт учитывает статистику за последние 7 дней. Запланируйте его запуск еженедельно .

Как это работает

Скрипт делает две вещи:

  • Во-первых, он находит ключевые слова, процент показов которых слишком низок, и увеличивает для них ставки.
  • Затем скрипт находит все ключевые слова, у которых Ctr выше 1% и процент показов слишком высок, и снижает для них ставки.

Обратите внимание, что один итератор может получить только 50 000 ключевых слов . Следовательно, за одно выполнение скрипта будет увеличено не более 50 000 ставок, а уменьшено 50 000 ставок.

Вам следует тщательно корректировать ставку в соответствии с ситуацией в вашем аккаунте. При принятии решения о корректировке ставок для ключевых слов вы можете учитывать и другие факторы, помимо Ctr.

Параметры

Обновите следующие параметры в скрипте:

  • TARGET_IMPRESSION_SHARE указывает процент полученных показов, которого вы хотите достичь.
  • Как только процент полученных показов ключевого слова окажется в TOLERANCE TARGET_IMPRESSION_SHARE , его ставки больше не будут обновляться. Мы не хотим, чтобы ставка ключевого слова постоянно менялась вверх и вниз, потому что его процент показов составляет 49 против 51.
  • BID_ADJUSTMENT_COEFFICIENT определяет множитель, который будет использоваться при корректировке ставок для ключевых слов. Чем больше множитель, тем агрессивнее меняется ставка.

Настраивать

  • Создайте новый скрипт с исходным кодом ниже.
  • Не забудьте обновить TARGET_IMPRESSION_SHARE , TOLERANCE и BID_ADJUSTMENT_COEFFICIENT в приведенном ниже коде.
  • Внимательно посмотрите на условия, используемые для получения ключевых слов.
  • Расписание сценария на неделю .

Исходный код

// 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();
}