Новый скрипт управления ставками в AdWords — по проценту полученных показов
Руководитель отдела контекстной рекламы в агентстве Mello Андрей Педченко подготовил скрипт для управления ставками в Google AdWords с учетом нового показателя. Чем этот подход отличается от уже существующих, читайте ниже.
Вы не поверите, но ниже описан действительно новый вариант назначения ставок для поисковых кампаний в AdWords. Сам не верю, но он появился, и именно этот вариант хотелось реализовать больше всего. Но обо всем по порядку.
Как управляют ставками существующие скрипты:
-
По позиции. Cкрипт берет статистику по средней позиции ключевой фразы за заданный период и повышает/понижает ставку. Минусом такого подхода является то, что фраза может, например занимать позицию 1,1, но при этом не будет выигрывать все аукционы и процент показа может быть около 70%.
-
По ориентировочным ставкам (для показа над органикой или на первой странице поисковой выдачи). Недостаток очевиден: приходится ориентироваться на какую-то ставку, предлагаемую AdWords; нет гарантии, что объявление действительно попадет в нужный блок; неизвестно, какой процент полученных показов будет.
-
Разные варианты сочетания статистики по показам, кликам, CTR.
Недавно в скриптах AdWords появилась возможность работы с таким показателем как «Процент полученных показов в поиск. сети»; доступны еще не все возможности и в справке о нем немного информации, однако для управления ставками его можно использовать.
Как нам поможет процент полученных показов? Это единственная метрика, показывающая, как часто люди ищут наши товары/услуги и как часто наши объявления появляются им в ответ. Опираясь на этот процент при управлении ставками, мы не будем отвлекаться на показатели только выигранных аукционов, мы будем знать, сколько аукционов было всего и в какой их доле мы победили.
Работает это так: получаем статистику за заданный период и, если процент высокий, можем понизить ставку, если низкий, то ставку повышаем.
Несколько недель назад в справке по скриптам AdWords появился нужный нам скрипт, но он не учитывает ситуацию, когда у фразы нет данных по проценту полученных показов. Кроме того, желаемый процент полученных показов задается числом от 1 до 100, что на деле не работает, диапазон должен быть от 0.01 до 1, что эквивалентно 1-100%.
Итак, давайте посмотрим на дополненный скрипт:
////////Начало
// Желаемое значение процента полученных показов от 0 до 1
var TARGET_IMPRESSION_SHARE = 0.95;
// Множитель ставки
var BID_ADJUSTMENT_COEFFICIENT = 1.25;
// Верхний порог ставки
var max = 40;
// Ставка для фраз без показов
var noImp = 30;
// Нижний порог ставки
var min = 15;
// Условие отбора фраз, например "имя кампании содержит"
var cond = "CampaignName CONTAINS 'brand'";
// Период для отбора
var period = 'LAST_14_DAYS';
// Основная функция, без нее никуда
function main() {
// Ф-я подъема ставок
raiseKeywordBids();
// Ф-я снижения ставок
lowerKeywordBids();
// Ф-я установки ставок для фраз с нулем показов
noImpressionsKeywordBids();
}
// Ф-я подъема ставок
function raiseKeywordBids() {
Logger.log("Повышаем");
var keywordsToRaise = getKeywordsToRaise();
while (keywordsToRaise.hasNext()) {
var keyword = keywordsToRaise.next();
keyword.bidding().setCpc(getIncreasedCpc(keyword.bidding().getCpc()));
Logger.log(keyword.getText()+" - "+keyword.getCampaign().getName());
}
}
// Ф-я снижения ставок
function lowerKeywordBids() {
Logger.log("Понижаем");
var keywordsToLower = getKeywordsToLower();
while (keywordsToLower.hasNext()) {
var keyword = keywordsToLower.next();
keyword.bidding().setCpc(getDecreasedCpc(keyword.bidding().getCpc()));
Logger.log(keyword.getText()+" - "+keyword.getCampaign().getName());
}
}
// Ф-я установки ставок для фраз с нулем показов
function noImpressionsKeywordBids() {
Logger.log("Ставим фиксированную ставку");
var keywordsToLower = getKeywordsNoImpressions();
while (keywordsToLower.hasNext()) {
var keyword = keywordsToLower.next();
keyword.bidding().setCpc(noImp);
Logger.log(keyword.getText()+" - "+keyword.getCampaign().getName());
}
}
// Ф-я повышения ставки
function getIncreasedCpc(cpc) {
var bid = cpc * BID_ADJUSTMENT_COEFFICIENT; if (bid>max) {bid=max;} else if (bid<min) {bid=min;}
return bid;
}
// Ф-я снижения ставки
function getDecreasedCpc(cpc) {
var bid = cpc / BID_ADJUSTMENT_COEFFICIENT; if (bid<min) {bid=min;} else if (bid>max) {bid=max;}
return bid;
}
// Ф-я получения ключевых слов, которым надо поднять ставку
function getKeywordsToRaise() {
return AdWordsApp.keywords().withCondition(cond)
.withCondition("Impressions > 0")
.withCondition('Status = ENABLED')
.withCondition('SearchImpressionShare < ' + TARGET_IMPRESSION_SHARE)
.orderBy('SearchImpressionShare ASC')
.forDateRange(period)
.get();
}
// Ф-я получения ключевых слов, которым надо опустить ставку
function getKeywordsToLower() {
return AdWordsApp.keywords().withCondition(cond)
.withCondition("Impressions > 0")
.withCondition('SearchImpressionShare > ' + TARGET_IMPRESSION_SHARE)
.withCondition('Status = ENABLED')
.orderBy('SearchImpressionShare DESC')
.forDateRange(period)
.get();
}
// Ф-я получения ключевых слов, у которых не было показов
function getKeywordsNoImpressions() {
return AdWordsApp.keywords().withCondition(cond)
.withCondition("Impressions = 0")
.withCondition('Status = ENABLED')
.forDateRange(period)
.get();
}
///////Конец
Комментариев достаточно, можете проверять работоспособность.
Примеры выполнения из отчета и журнала:
Вот и всё, ставить скрипты все уже умеют. Будьте внимательны с кавычками и апострофами, можно использовать либо обычные одинарные, либо обычные двойные, но без завитушек и уголков. Расписание рекомендую назначить на каждый день или неделю, выполнять скрипт каждый час не имеет смысла.
Последние комментарии