Хочешь повысить отдачу от Директа?
Включи «Автопилот»

Пишем биддер для Google AdWords из 10 строчек

Россия+7 (495) 960-65-87
Шрифт:
61 22529

Если Вы занимаетесь контекстной рекламой в Google AdWords, то уже успели задуматься об автоматизации управления рекламными кампаниями. Благо, имеется AdWords Editor, с которым многие процессы проходят гораздо быстрее, чем при работе в интерфейсе рекламной системы, хотя и там возможностей предостаточно. Но все еще есть задачи, которые нужно решать массово, а очевидного решения нет. На этот случай мы можем использовать скрипты javascript, тем самым облегчая свою работу и получая необходимый результат.

Посмотрев статьи о скриптах для AdWords в русскоязычных источниках нам не удалось найти материала, который не копировал бы справку AdWords Scripts и не отсылал пользователя к готовым решениям Google. Чаще всего приводятся «многоэтажные» коды для отслеживания битых ссылок, отключения неэффективных ключевых фраз, и выставления ставок в зависимости от температуры. Это все здорово, но слишком сложно для человека, ранее не вникавшего в программирование.

В этой статье мы рассмотрим простейший и очень полезный код, каждый час корректирующий ставки ключевых слов.

Биддеры как основной инструмент оптимизации рекламных кампаний уже давно устарели. Сейчас в почете оптимизация конверсий (CRO) и perfomance marketing. И это правильно. Тем не менее, периодически возникают задачи, которые нельзя решить в рамках новейших методик:

  1. Рекламодатель не имеет оптимально настроенной аналитической системы: на момент запуска контекстной рекламы отсутствуют данные, по которым можно сразу оптимизировать рекламные кампании.

  2. Недостаточно данных для корректной работы оптимизаторов конверсии.

  3. Принципиальное нежелание рекламодателя по определенным запросам уходить из контекстный рекламы, независимо от их эффективности


В этих ситуациях вам поможет биддер. Знания в программировании необязательны. Кодим!

Первым делом мы обозначаем основную функцию (в программировании функция — это фрагмент кода, который выполняется каждый раз, когда его просят выполниться).

function main(){}

Далее в фигурных скобках описываем все команды, которые необходимо выполнить. Первым делом мы создаем переменную, которая представляет собой ключевое слово рекламной кампании:

var kw1 = AdWordsApp.keywords()

С помощью команды «var» задаются переменные в javascript, «kw1» - это имя переменной, а все, что после знака равенства — это метод, позволяющий нам «вытягивать» ключевые слова из аккаунта. Понятное дело, - нужно задать критерий выборки ключевых фраз:

.withCondition('CampaignName = "Имя кампании"')

.get();

Этот фрагмент будет получать все ключевые фразы из указанной кампании. Чтобы «достать» все ключевики надо зациклить обозначенную выше операцию, делается это с помощью условия:

while(kw1.hasNext()){}

Теперь мы будем переходить на каждую следующую фразу, пока они не закончатся, но нам надо успевать обрабатывать каждую из них по очереди, поэтому внутри цикла опишем необходимые операции, прописываем следующие строки между фигурных скобок:

var kw2 = kw1.next();

Тем самым мы создаем переменную «kw2», в которую записываем каждое следующее ключевое слово. Создадим еще одну переменную, в которую будем записывать ставку, необходимую для попадания на первую страницу результатов поисковой выдачи:

var kw3 = kw2.getFirstPageCpc();

Для каждого «ключа» в эту переменную будет записываться своя ставка. Иногда (очень редко) у системы нет данных о том, какая ставка позволит попасть на первую страницу, в таком случае в переменную «kw3» не запишется никакого значения, и наша программа выдаст ошибку (данных обычно нет для низкочастотных или не встречавшихся ранее запросов). Чтобы обойти эту проблему пропишем условие, по которому в случае отсутствия рекомендуемой ставки будет задаваться произвольное значение, например 15 рублей (речь идет о валюте, указанной в настройках аккаунта):

if (kw3<=0){

kw3=15;}

Теперь мы будем записывать в каждую полученную ключевую фразу максимальную цену за клик на основе полученной ставки для входа на первую страницу, помноженной на 5%:

kw2.setMaxCpc(kw3*1.05);

Всё! Это просто, и это работает. Теперь весь код целиком:

function main(){

var kw1 = AdWordsApp.keywords()

.withCondition('CampaignName = "Имя кампании"')

.get();

while(kw1.hasNext()){

var kw2 = kw1.next();

var kw3 = kw2.getFirstPageCpc();

if (kw3<=0){

kw3=15;}

kw2.setMaxCpc(kw3*1.05);}}

Таким образом, наш код будет получать необходимые минимальные ставки всех ключевых слов для занятия первой страницы, будет увеличивать это значение на 5%, и далее присваивать каждую новую ставку каждому ключевому слову. Всего 10 строчек! Можете проверить на любой из кампаний, для этого откройте аккаунт AdWords и перейдите в раздел скриптов в массовых операциях, нажмите кнопку добавления скрипта:

1.png

Вам будет предложен тестовый скрипт, на его место вставляете ваш код, сохраняете, авторизуетесь, запускаете просмотр для поиска ошибок и проверки, по мере необходимости сохраняете изменения:

В этом же интерфейсе есть множество примеров, которые помогут решить большое количество различных задач.

Далее скрипт закрываем и настраиваем периодичность его выполнения:

Возможно, сейчас Вы подумали: “А почему бы не использовать правила для автоматизации назначения ставок, которые предложены нам в интерфейсе AdWords?” Кто не знает, они находятся здесь:

Не используем мы их потому, что по этим правилам ставка может только повышаться до необходимого уровня, при таком подходе мы можем переплатить за клики. Например, вчера для конкретного ключевого слова для показов вверху первой страницы была ставка 50 рублей (и система выставила это значение), а сегодня уже 30 рублей, но наша ставка так и останется равной 50 рублям. Вы ведь не хотите переплачивать 20 рублей за каждый дополнительный клик?

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

Что касается качества работы такого биддера, то просто приведем статистику из аккаунтов, где подобный код удерживает ставки для показов вверху страницы.

Аккаунт 1 (18 января - 31 января):

Скрипт был внедрен 22 января. Данные берутся из аккаунта AdWords.

Для аккаунта с 5-ю кампаниями в поисковой сети средняя цена за клик снизилась с 30 до 5,5 рублей.

5.png

Благодаря снижению цены клика в тот же период повысилось и число получаемых кликов в день.

6.png

При этом дневной расход особо не изменился.

7.png

Конечно, средняя занимаемая позиция колебалась, но по всем фразам мы показывались в верхней части страницы, а для стабильного удержания конкретной позиции просто надо задать корректировку ставок, которую можно определить экспериментально в несколько итераций.

Доля выигранных показов в поиске также увеличилась.

8.png

Для чего мы вообще решили использовать такой биддинг? Во-первых, Клиент хочет всегда показываться в топе, а, во-вторых, нам было необходимо оптимизировать аккаунт по конверсиям, не имея при этом большой статистики. С помощью удержания ставок должна была решиться задача снижения стоимости конверсии, что и было достигнуто:

9.png

Стоимость конверсии снизилась с 1078 рублей до 309 рублей, при этом возросло и число выполняемых целевых действий:

10.png

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

Аккаунт 2(1 января -14 февраля):

Скрипт был внедрен 23 января. Данные берутся из аккаунта Analytics.

Цена клика снизилась с 20 рублей до 5 рублей.

В количестве кликов особых изменений нет.

12.png

Количество конверсий не уменьшилось.

13.png

Но стоимость конверсии снизилась примерно с 600 рублей до 140 рублей.

14.png

Так как на сайте отслеживается не одно выполняемое действие , то суммарное число конверсий оценивается с помощью вычисляемого показателя calcmetric_calcmetric_sostav_target, аналогично, показатель calcmetric_calcmetric_cost_cr подсчитывает среднюю стоимость коверсии.

На примере второго аккаунта также видна положительная динамика в результате внедрения скрипта, которая в первую очередь сказывается на снижении цены клика.

Аккаунт 3(1 января -14 февраля):

Скрипт был внедрен 21 января. Данные берутся из аккаунта AdWords. Конверсии не отслеживаются.

Среднее число кликов в день увеличилось с 22 до 104.

15.png

Цена клика уменьшилась с 15 рублей до 2-3 рублей.

16.png

Средняя занимаемая позиция зафиксировалась на уровне 1,9.

17.png

Процент полученных показов в поиске также начал расти.

18.png

Кликабельность не изменилась.

19.png

В общем пробуйте, программируйте, это очень хорошо работает. А много полезной информации можно найти на следующих сайтах:

http://www.freeadwordsscripts.com

https://gist.github.com/derekmartinla

http://www.rankhammer.com/blog

А прочитав справку AdWords Scripts, Вы узнаете как из приведенного в статье скрипта сделать биддер для удержания верхних строчек первой страницы:

https://developers.google.com/adwords/scripts/


Читайте нас в Telegram - digital_bar

Есть о чем рассказать? Тогда присылайте свои материалы Даше Калинской


Новые 
Новые
Лучшие
Старые
Сообщество
Подписаться 
Подписаться на дискуссию:
E-mail:
ОК
Вы подписаны на комментарии
Ошибка. Пожалуйста, попробуйте ещё раз.
Отправить отзыв
  • Кирилл
    1
    комментарий
    0
    читателей
    Кирилл
    6 месяцев назад
    добрый день! Отлично все описано.Сделал все по инструкции, но скрипт не проходит авторизацию (
    Посоветуйте что можно сделать?
    -
    0
    +
    Ответить
  • Виталий Кулинич
    3
    комментария
    0
    читателей
    Виталий Кулинич
    6 месяцев назад
    Андрей возможно ли с вами как то связаться для написания индивидуального скрипта?
    -
    0
    +
    Ответить
  • Виталий Кулинич
    3
    комментария
    0
    читателей
    Виталий Кулинич
    6 месяцев назад
    Что то изменений нету в данном скрипте
    -
    0
    +
    Ответить
  • Сергей
    4
    комментария
    0
    читателей
    Сергей
    больше года назад
    Странно, однако не вставляется полный скрипт, а тот что вставляется - с ошибками.
    Может дадите почту на которую я смогу выслать скрипт для анализа?
    Благодарю
    -
    0
    +
    Ответить
  • Сергей
    4
    комментария
    0
    читателей
    Сергей
    больше года назад
    function main(){                                  
      var kw1 = AdWordsApp.keywords()                  
      .withCondition('CampaignName = «Camp1_Kiev» ’)
       ...
    function main(){                                  
      var kw1 = AdWordsApp.keywords()                  
      .withCondition('CampaignName = «Camp1_Kiev» ’)
        .get();                                          
      while(kw1.hasNext()){                            
        var kw2 = kw1.next();                          
        var kw3 = kw2.getTopOfPageCpc();              
    if (kw33){
            kw3=3;}
        kw2.setMaxCpc(kw3);}}

    -
    0
    +
    Ответить
  • Сергей
    4
    комментария
    0
    читателей
    Сергей
    больше года назад
    Сори, точный скрипт вот:
    function main(){                                  
      var kw1 = AdWordsApp.keywords()                  
      .withCondition('CampaignName = «Camp1_Kiev» ...
    Сори, точный скрипт вот:
    function main(){                                  
      var kw1 = AdWordsApp.keywords()                  
      .withCondition('CampaignName = «Camp1_Kiev» ’)
        .get();                                          
      while(kw1.hasNext()){                            
        var kw2 = kw1.next();                          
        var kw3 = kw2.getTopOfPageCpc();              
    if (kw33){
            kw3=3;}
        kw2.setMaxCpc(kw3);}}

    -
    0
    +
    Ответить
  • Сергей
    4
    комментария
    0
    читателей
    Сергей
    больше года назад
    Здравствуйте, Андрей!
    Как-то совершенно не обладаю знаниями в программировании(( Однако понимаю важность и необходимость того что вы сделали))
    В общем, объединил немножко инфо из ваших кодов, но выдает ошибку.
    Цель попасть в ТОП вверху страницы и одновременно не превысить бюджет 3 доллара за запрос.
    Вот такое налепил:
    function main(){                  ...
    Здравствуйте, Андрей!
    Как-то совершенно не обладаю знаниями в программировании(( Однако понимаю важность и необходимость того что вы сделали))
    В общем, объединил немножко инфо из ваших кодов, но выдает ошибку.
    Цель попасть в ТОП вверху страницы и одновременно не превысить бюджет 3 доллара за запрос.
    Вот такое налепил:
    function main(){                                  
      var kw1 = AdWordsApp.keywords()                  
      .withCondition('CampaignName = «Camp1_Kiev» ’)
        .get();                                          
      while(kw1.hasNext()){                            
        var kw2 = kw1.next();                          
        var kw3 = kw2.getTopOfPageCpc();              
    if (kw33){
            kw3=3;}
        kw2.setMaxCpc(kw3);}}

    И вот такую ошибку выдает:
    One of the conditions in the query is invalid. (line 2)

    Кстати, такую же ошибку выдает если вставить код, который описан у вас.
    Прошу, по возможности, помочь устранить эту ошибку(На всякий случай, запускаю скрипт в приостановленной кампании - может в этом проблема).
    Благодарю.
    -
    0
    +
    Ответить
  • Raimonds
    1
    комментарий
    0
    читателей
    Raimonds
    больше года назад
    Здравствуйте! Спасибо за скрипт! Так как данные о цене первой страницы не совсем точные, можно ли в скрипте сделать изменения чтобы не было показов наверху?
    -
    0
    +
    Ответить
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Raimonds
      больше года назад
      Вы можете использовать метод .getFirstPageCpc();
      А в идеале можно написать скрипт или найти решение в справке adwords scripts , который назначает ставку с учетом ранее занимаемой позиции объявления.
      -
      0
      +
      Ответить
  • Николай
    больше года назад
    Здравствуйте, применил данный скрипт к компании, при выполнении в сводке указанно "завершено без изменений" Это значит где то ошибка? или нужно подождать какой-то период времени?
    -
    0
    +
    Ответить
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Николай
      больше года назад
      Попробуйте изменить пару ставок вручную и снова запустить скрипт, изменения должны появиться.
      -
      0
      +
      Ответить
  • Константин Олегович
    4
    комментария
    0
    читателей
    Константин Олегович
    больше года назад
    и с пробелами или со спецсимволами
    -
    0
    +
    Ответить
  • Константин Олегович
    4
    комментария
    0
    читателей
    Константин Олегович
    больше года назад
    а если у меня название кампании на русском - так и писать?
    -
    0
    +
    Ответить
  • Константин Олегович
    4
    комментария
    0
    читателей
    Константин Олегович
    больше года назад
    как распечатать комментарии?

    для аккаунтов на брендовых доменах обязательна платная авторизация. цена 4301р в год
    -
    0
    +
    Ответить
  • Николай
    1
    комментарий
    0
    читателей
    Николай
    больше года назад
    Занимаюсь adwords 3 месяца.

    Ранее ставки назначал с использованием стратегии Целевое положение на странице поиска "Над результатами поиска".
    Все было хорошо, но постепенно средняя позиция с 3-4 приблизилась к 1 и стал для меня очень дорогой клик.

    Решил попробовать размещаться в вверху страницы, но на 2-3 позиции.

    Так как ключевых слов около 2 тыс., и вруную ставки назначать нет времени, был выбран вариант попробовать скрипты.

    Занимаюсь adwords 3 месяца.

    Ранее ставки назначал с использованием стратегии Целевое положение на странице поиска "Над результатами поиска".
    Все было хорошо, но постепенно средняя позиция с 3-4 приблизилась к 1 и стал для меня очень дорогой клик.

    Решил попробовать размещаться в вверху страницы, но на 2-3 позиции.

    Так как ключевых слов около 2 тыс., и вруную ставки назначать нет времени, был выбран вариант попробовать скрипты.

    Для чего поставил Ваш скрипт.

    Благодарю за скрипт.
    Подправил его немного для удержания вверху страницы, заменив
    keyword.getFirstPageCpc() на keyword.getTopOfPageCpc() и добавив пару ограничений на величину макс. и мин. ставки;
    Работает сам скрипт хорошо, математика верная.

    Только возникли следующие вопросы:

    1. начал использовать скрипт с Оцен. ставка для показа вверху страницы + 5%, как у Вас в примере.
    Обнаружил, что значительная часть ключевых слов просто перестала показываться, пишет нехватает ставки или качества.
    Качество по этим объявлениям от 7 до 10.
    Техподдержка сказала, что особо опираться на Оцен. ставка для показа вверху страницы, не нужно, так как это цифра рассчитанная для всего мира.
    У меня региональная реклама услуг, таргетинг на строго 1 город, только на людей из целевого местоположения, для чего мне ориентир для всего мира???
    Ладно, думаю, буду поднимать процент с 5 далее.
    За неделю дошел до Оцен. ставка для показа вверху страницы + 40%.
    И всё равно вчера почти все показы внизу страницы, средняя позиция 4,5 ((((.
    Повторяю, качество от 7 до 10, ctr средний 15%.
    Конкуренция по моим запросам низная, зачастую, даже не все блоки заполнены объявлениями.
    У меня заполнены все доступные уточнения:  адрес, номер телефона, доп ссылки, уточнения.
    У конкурентов макс. по 1-2 уточнения.

    Не понимаю выдачи((((

    Поясните, что может это значить?

    И как правильно размещаться на 2-3 строке объявлений над результатами поиска???

    -
    0
    +
    Ответить
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Николай
      больше года назад
      Николай, Вы можете написать скрипт, который будет брать статистику по средней занимаемой позиции для каждого ключевика за указанный период, и на основе этого назначать ставку.
      AdWords не очень хорошо показывает низкочастотные запросы, иногда для этого приходится просто ломить ставку.
      Также Вы можете с помощью скрипта собирать статистику о проценте выигранных показов, и на основе этих данных назначать ставку, а если у слова низкий показатель качества или мало показов, то просто ло...
      Николай, Вы можете написать скрипт, который будет брать статистику по средней занимаемой позиции для каждого ключевика за указанный период, и на основе этого назначать ставку.
      AdWords не очень хорошо показывает низкочастотные запросы, иногда для этого приходится просто ломить ставку.
      Также Вы можете с помощью скрипта собирать статистику о проценте выигранных показов, и на основе этих данных назначать ставку, а если у слова низкий показатель качества или мало показов, то просто ломить по нему ставку.
      Извините за поздний ответ.
      -
      0
      +
      Ответить
  • Александр
    3
    комментария
    0
    читателей
    Александр
    больше года назад
    Андрей, спасибо за скрипт! Никак не получается в скрипте прописать ограничение максимальной цены как для первой страницы так и для ТОП. Выдает ошибку. Есть ли полностью скрипт с такими параметрами?
    -
    0
    +
    Ответить
  • Александр
    3
    комментария
    0
    читателей
    Александр
    больше года назад
    Спасибо за Скрипт! Полезная вещь. Такой вопрос: а если стоит задача не отключать, а включать ключевые слова при достижении определенной ставки для показа на первой странице, как это прописать? К примеру 200 рублей и ключи должны включиться, как только меньше 200 рублей, снова отключаются.
    -
    0
    +
    Ответить
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Александр
      больше года назад
      Попробуйте так:
      if (x>200){                                  
              y.enable();}
      else {
              y.pause();}
      здесь х - переменная куда заносится ставка
           &...
      Попробуйте так:
      if (x>200){                                  
              y.enable();}
      else {
              y.pause();}
      здесь х - переменная куда заносится ставка
                 у - переменная с ключевым словом
      -
      0
      +
      Ответить
  • Семен
    больше года назад
    Здравствуйте. Спасибо за статью. А как получить величину расчетной ставки для первой позиции? В справке такой функции не нашел((


    -
    0
    +
    Ответить
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Семен
      больше года назад
      Такой возможности нет, но Вы можете задавать ставку для показа вверху страницы и к ней применять корректировки.
      -
      1
      +
      Ответить
      • Семен
        Андрей Педченко
        больше года назад
        У меня задача - держать позицию до 1.5. Можно изменить ваш скрипт так, чтобы он повышал ставку, если средняя позиция ниже 1.5. Но тогда проще правила использовать, как мне кажется.
        -
        0
        +
        Ответить
        • Андрей Педченко
          23
          комментария
          0
          читателей
          Андрей Педченко
          Семен
          больше года назад
          Вы можете добавить условие, по которому будет отдельно повышаться ставка для слов с позицией ниже 1,5. В справке AdWords Scripts посмотрите, для этого есть отдельный метод.
          -
          2
          +
          Ответить
          • Anton Stremovskyy
            2
            комментария
            1
            читатель
            Anton Stremovskyy
            Андрей Педченко
            больше года назад
            // Позиция рекламного объявления которую пытаемся занять.
            var TARGET_AVERAGE_POSITION = 3;

            // Когда позиция обьявления будет между TOLERANCE и TARGET_AVERAGE_POSITION,
            // Ее ставка не будет изменена.
            var TOLERANCE = 0.1;

            // Значение для корректировки ставки (1.05 = 5%).
            var BID_ADJUSTMENT_COEFFICIENT = 1.05;

            function main() {
              raiseKeywordBids();
              lowerKeywordBids(&...
            // Позиция рекламного объявления которую пытаемся занять.
            var TARGET_AVERAGE_POSITION = 3;

            // Когда позиция обьявления будет между TOLERANCE и TARGET_AVERAGE_POSITION,
            // Ее ставка не будет изменена.
            var TOLERANCE = 0.1;

            // Значение для корректировки ставки (1.05 = 5%).
            var BID_ADJUSTMENT_COEFFICIENT = 1.05;

            function main() {
              raiseKeywordBids();
              lowerKeywordBids();
            }

            function raiseKeywordBids() {
              // Условие для увеличения ставки: Средняя позиция больше (хуже) чем
              // TARGET_AVERAGE_POSITION + TOLERANCE
              var keywordsToRaise = AdWordsApp.keywords()
                .withCondition("Status = ENABLED")
                .withCondition("AveragePosition > " + (TARGET_AVERAGE_POSITION + TOLERANCE))
                .orderBy("AveragePosition ASC")
                .forDateRange("LAST_7_DAYS")
                .get();

              while (keywordsToRaise.hasNext()) {
                var keyword = keywordsToRaise.next();
                keyword.setMaxCpc(keyword.getMaxCpc() * BID_ADJUSTMENT_COEFFICIENT);
              }
            }

            function lowerKeywordBids() {
              // Условия для снижения ставки: Ctr больше чем 1% и
              // средняя позици лучше (меньше) чем TARGET_AVERAGE_POSITION - TOLERANCE
              var keywordsToLower = AdWordsApp.keywords()
                .withCondition("Ctr > 0.01")
                .withCondition("AveragePosition < " + (TARGET_AVERAGE_POSITION - TOLERANCE))
                .withCondition("Status = ENABLED")
                .orderBy("AveragePosition DESC")
                .forDateRange("LAST_7_DAYS")
                .get();


              while (keywordsToLower.hasNext()) {
                var keyword = keywordsToLower.next();
                keyword.setMaxCpc(keyword.getMaxCpc() / BID_ADJUSTMENT_COEFFICIENT);
              }
            }
            -
            1
            +
            Ответить
  • Гость
    больше года назад
    Добрый день! Подскажите пожалуйста для особо одаренных, скопировал Ваш скрипт без изменений, указал название своей кампании, вставил ...
    Теперь вопрос: для того чтобы скрипт заработал надо пройти авторизацию. Как долго этот процесс происходит?
    И скажите с самой кампанией надо что то менять?
    -
    0
    +
    Ответить
  • Maks Sh
    2
    комментария
    0
    читателей
    Maks Sh
    больше года назад
    Здравствуйте! А как-то можно допилить данный замечательный скрпит, чтобы он ориентировался на конкретно указанные позиции?
    -
    1
    +
    Ответить
    • Anton Stremovskyy
      2
      комментария
      1
      читатель
      Anton Stremovskyy
      Maks Sh
      больше года назад
      // Позиция рекламного объявления которую пытаемся занять.
      var TARGET_AVERAGE_POSITION = 3;

      // Когда позиция обьявления будет между TOLERANCE и TARGET_AVERAGE_POSITION,
      // Ее ставка не будет изменена.
      var TOLERANCE = 0.1;

      // Значение для корректировки ставки (1.05 = 5%).
      var BID_ADJUSTMENT_COEFFICIENT = 1.05;

      function main() {
        raiseKeywordBids();
        lowerKeywordBids(&...
      // Позиция рекламного объявления которую пытаемся занять.
      var TARGET_AVERAGE_POSITION = 3;

      // Когда позиция обьявления будет между TOLERANCE и TARGET_AVERAGE_POSITION,
      // Ее ставка не будет изменена.
      var TOLERANCE = 0.1;

      // Значение для корректировки ставки (1.05 = 5%).
      var BID_ADJUSTMENT_COEFFICIENT = 1.05;

      function main() {
        raiseKeywordBids();
        lowerKeywordBids();
      }

      function raiseKeywordBids() {
        // Условие для увеличения ставки: Средняя позиция больше (хуже) чем
        // TARGET_AVERAGE_POSITION + TOLERANCE
        var keywordsToRaise = AdWordsApp.keywords()
          .withCondition("Status = ENABLED")
          .withCondition("AveragePosition > " + (TARGET_AVERAGE_POSITION + TOLERANCE))
          .orderBy("AveragePosition ASC")
          .forDateRange("LAST_7_DAYS")
          .get();

        while (keywordsToRaise.hasNext()) {
          var keyword = keywordsToRaise.next();
          keyword.setMaxCpc(keyword.getMaxCpc() * BID_ADJUSTMENT_COEFFICIENT);
        }
      }

      function lowerKeywordBids() {
        // Условия для снижения ставки: Ctr больше чем 1% и
        // средняя позици лучше (меньше) чем TARGET_AVERAGE_POSITION - TOLERANCE
        var keywordsToLower = AdWordsApp.keywords()
          .withCondition("Ctr > 0.01")
          .withCondition("AveragePosition < " + (TARGET_AVERAGE_POSITION - TOLERANCE))
          .withCondition("Status = ENABLED")
          .orderBy("AveragePosition DESC")
          .forDateRange("LAST_7_DAYS")
          .get();


        while (keywordsToLower.hasNext()) {
          var keyword = keywordsToLower.next();
          keyword.setMaxCpc(keyword.getMaxCpc() / BID_ADJUSTMENT_COEFFICIENT);
        }
      }
      -
      0
      +
      Ответить
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Maks Sh
      больше года назад
      Вы можете использовать один из методов получения ставки, чтобы занимать либо верхнюю часть страницы, либо нижнюю часть:
      keyword.getFirstPageCpc(); keyword.getTopOfPageCpc();
      Далее можно полученную ставку увеличить или уменьшить на заданный Вами коэффициент, например, подняли на 4 руб. Далее смотрим статистику в течение 3-4 дней и понимаем, что показываемся на позиции 2,3. Чтобы показаться ближе к третьей строчке изменим наш коэффициент с 4 руб до 2 и снова посмотри...
      Вы можете использовать один из методов получения ставки, чтобы занимать либо верхнюю часть страницы, либо нижнюю часть:
      keyword.getFirstPageCpc(); keyword.getTopOfPageCpc();
      Далее можно полученную ставку увеличить или уменьшить на заданный Вами коэффициент, например, подняли на 4 руб. Далее смотрим статистику в течение 3-4 дней и понимаем, что показываемся на позиции 2,3. Чтобы показаться ближе к третьей строчке изменим наш коэффициент с 4 руб до 2 и снова посмотрим. Хотите занять первую строчку - увеличьте коэффициент и снова посмотрите на статистику занимаемой позиции. Так в несколько шагов можно закрепиться на нужной позиции.
      -
      4
      +
      Ответить
  • Станислав Виленский
    3
    комментария
    0
    читателей
    Станислав Виленский
    больше года назад
    Получается биддер ставит мин.цену для показа на первой странице?

    А если задача показываться на первой вверху, какое условие нужно добавить/заменить, при этом ограничив ставку в 100 рублей?

    Чем этот биддер отличается от стратегии в разделе Общая библиотека >Стратегии назначения ставок >Вверху первой страницы результатов поиска
    ???
    -
    1
    +
    Ответить
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Станислав, чтобы добавить ограничение для ставки, - добавьте условие, а для показов наверху нужен метод .getTopOfPageCpc();
      как-то так:
      function main(){                                  
        var kw1 = AdWordsApp.keywords()         ...
      Станислав, чтобы добавить ограничение для ставки, - добавьте условие, а для показов наверху нужен метод .getTopOfPageCpc();
      как-то так:
      function main(){                                  
        var kw1 = AdWordsApp.keywords()                  
        .withCondition('CampaignName = «Имя кампании»’)
          .get();                                          
        while(kw1.hasNext()){                            
          var kw2 = kw1.next();                          
          var kw3 = kw2.getTopOfPageCpc();              
      if (kw3>100){
              kw3=100;}
          kw2.setMaxCpc(kw3);}}

      -
      1
      +
      Ответить
    • Гость
      Станислав Виленский
      больше года назад
      Аналогично интересует данный вопрос.
      -
      0
      +
      Ответить
      • Андрей Педченко
        23
        комментария
        0
        читателей
        Андрей Педченко
        Гость
        больше года назад
        В целом такой скрипт повторяет названную выше стратегию, но имеет ряд преимуществ: Вы сами настраиваете режим выполнения, - хоть каждый час, стратегия это не гарантирует. Вы можете в ручную выполнить скрипт в любой момент. Вы можете указать множество дополнительный условий и критериев отбора ключевых слов.
        -
        0
        +
        Ответить
  • Гость
    больше года назад
    Скрипт пропускает удаленные и остановленные группы объявлений?
    -
    0
    +
    Ответить
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Гость
      больше года назад
      У остановленных фраз меняет ставку, у удаленных ничего не меняет. В журнале выполнения может появляться ошибка о том, что фраза удалена, но код продолжает выполняться дальше.
      -
      0
      +
      Ответить
  • Гость
    больше года назад
    Можно ли запустить скрипт сразу на несколько кампаний? Если, да то как изменить код нужно?
    -
    0
    +
    Ответить
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Гость
      больше года назад
      Также есть продвинутое готовое решение developers.google.com/adwords/scripts/docs/solutions/multi-bidder
      -
      0
      +
      Ответить
    • Olga Sidorova
      1
      комментарий
      0
      читателей
      Olga Sidorova
      Гость
      больше года назад
      Мы сделали вот таким образом (спасибо автору скрипта):
      var campagins = ["Name1", "Name2"];
          
          for (var i = 0; i < campagins.length; i++) {
              var campagin = campagins[i];
              var kw1 = AdWordsApp.keywords()
              .withCondition&#...
      Мы сделали вот таким образом (спасибо автору скрипта):
      var campagins = ["Name1", "Name2"];
          
          for (var i = 0; i < campagins.length; i++) {
              var campagin = campagins[i];
              var kw1 = AdWordsApp.keywords()
              .withCondition('CampaignName = "' + campagin + '"')
              .get();

              while(kw1.hasNext()){
                  var kw2 = kw1.next();
                  var kw3 = kw2.getFirstPageCpc();
                  if (kw3
      -
      0
      +
      Ответить
      • Андрей Педченко
        23
        комментария
        0
        читателей
        Андрей Педченко
        Olga Sidorova
        больше года назад
        Ольга, спасибо! Чтобы занимать верхнюю часть первой страницы надо использовать метод .getTopOfPageCpc(); вместо .getFirstPageCpc();

        -
        0
        +
        Ответить
  • Гость
    больше года назад
    "Например, вчера для конкретного ключевого слова для показов вверху первой страницы была ставка 50 рублей (и система выставила это значение), а сегодня уже 30 рублей, но наша ставка так и останется равной 50 рублям. Вы ведь не хотите переплачивать 20 рублей за каждый дополнительный клик?"

    Разве это не аукцион второй цены?
    При ставке в 50 рублей стоимость клика должна быть 30р+минимальная...
    -
    3
    +
    Ответить
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Гость
      больше года назад
      Гость, ставка не останется равной 50 р, если скрипт работает. Он не только повышает, но и понижает ставку до нужного уровня. Вы можете настроить выполнение скрипта каждый час. В итоге ставка будет постоянно подгоняться так, чтобы Вы переплачивали не более того шага, который сами установите.
      -
      1
      +
      Ответить
      • Гость
        Андрей Педченко
        больше года назад
        Я не понимаю, почему будет переплата?
        -
        3
        +
        Ответить
        • Гость-2
          Гость
          больше года назад
          Вот именно. Это аукцион GSP, в котором ты платишь ставку рекламодателя ниже+1 цент, никакой переплаты быть не должно.
          -
          0
          +
          Ответить
          • Андрей Педченко
            23
            комментария
            0
            читателей
            Андрей Педченко
            Гость-2
            больше года назад
            Извините, не совсем так выразился. Вы, конечно, правы. Посмотрите, пожалуйста, на наглядную схему аукциона: yadi.sk/d/M5CkY8gUp3WNw
            Ставку системы повышаем для удержания в блоке или на какой-то позиции; мы можем переплатить, если завысим ставку и начнем показываться выше намеченной позиции, и у рекламодателя, находящегося выше, будет низкий показатель качества.
            -
            0
            +
            Ответить
  • Александр Савченко
    3
    комментария
    0
    читателей
    Александр Савченко
    больше года назад
    Добрый день. Спасибо за скрипт. Есть несколько вопросов.
    как задать максимальную ставку?

    Т.е если цена больше 50 рублей то отключить фразу
    Если при следующем запуске цена ниже 50 рублей то включить.

    И еще вопрос: Если при след. запуске цена клика уменьшится то скрипт тоже уменьшит цену?
    -
    0
    +
    Ответить
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Александр, спасибо за вопрос!
      При каждом выполнении скрипта ставка будет изменяться до значения, определенного AdWords. Если ставка для входа в блок уменьшилась, то и скрипт уменьшит старое значение, - в этом преимущество перед автоматическими правилами.
      Максимальную ставку можете задать дополнительным условие типа:
      if (a>50){
              a=45;}
      То есть, если AdWords для блока наметил ставку более 50р, то скрипт наз...
      Александр, спасибо за вопрос!
      При каждом выполнении скрипта ставка будет изменяться до значения, определенного AdWords. Если ставка для входа в блок уменьшилась, то и скрипт уменьшит старое значение, - в этом преимущество перед автоматическими правилами.
      Максимальную ставку можете задать дополнительным условие типа:
      if (a>50){
              a=45;}
      То есть, если AdWords для блока наметил ставку более 50р, то скрипт назначит 45.
      Если Вы хотите отключать ключевики, которые будут иметь ставку выше установленного порога, то делается это с помощью метода - keyword.pause(). В коде это также проще всего сделать через условие:
      if (a>17){                                  
              b.pause();}
      Иначе говоря, когда устанавливаемая ставка более 17р, мы останавливаем это ключевое слово.
      Чтобы включать остановленные фразы можно проверить разную логику, но самая простая, наверно, - это сначала включать все остановленные фразы, а потом останавливать те, которые больше установленного ограничения:
      if (b.isPaused(true)){                                  
              b.enable();}
      Первый метод keyword.isPaused() проверяет остановлено ли ключевое слово (это логическая переменная). Второй метод keyword.enable() запускает ключевик.
      В итоге приведенный в статье скрипт может выглядеть следующим образом:
      function main(){                                  
        var kw1 = AdWordsApp.keywords()                  
        .withCondition('CampaignName = «Имя кампании»’)
          .get();                                          
        while(kw1.hasNext()){                            
          var kw2 = kw1.next();                          
          var kw3 = kw2.getFirstPageCpc();              
          if (kw350){                                  
             kw2.pause();}
          kw2.setMaxCpc(kw3*1.05);}}

      Если необходимо отключать и включать фразы.
      -
      2
      +
      Ответить
      • Александр Савченко
        3
        комментария
        0
        читателей
        Еще раз спасибо за ответ.

        Как вывести в логи изменений и ошибки?

        Примерно накидал
        Logger.log("Ставка установлена " + kw3);

        Но не знаю как вывести к какой фразе установлена цена. и как задать несколько РК, через запятую?

        Т.е так ?
        .withCondition('CampaignName = "Название 1, Название 2"')

        Или так работать не будет?
        -
        0
        +
        Ответить
ПОПУЛЯРНЫЕ ОБСУЖДЕНИЯ НА SEONEWS
SEOnews и Serpstat запускают конкурс для интернет-маркетологов
Marina Lagutina
1
комментарий
0
читателей
Полный профиль
Marina Lagutina - Добрый день! Видимо я из тех, кто пытается последней вскочить в уходящий поезд. Ночью написала статью на тему "обзор инструментов контент-маркетинга". Своего блога нет. Отправила вам не мейл. Я еще могу у вас разместиться или искать, кто возьмет статью к себе в блог?
Влияние HTTPS на ранжирование региональных поддоменов в Яндексе
NiK Malefictum
3
комментария
0
читателей
Полный профиль
NiK Malefictum - Стакивался лишь с тем, что выдачу немного лихорадит первые 2-3 недели, и если у сайта была низкая скорость загрузки - ее нужно поправить. Региональным сайтам НУЖНО ставить HTTPS немного внутряк поправить / микроразметку и прочее прописать мета и пересмотреть контент зарегать компанию в каталогах предприятий и картографии и уже делать просто сделать статейные ссылки бесплатные. и все
Мир глазами поисковых систем
Александр Рунов
18
комментариев
0
читателей
Полный профиль
Александр Рунов - Какой регион, если не секрет? В Мск, в ряде ВК тематик (в тех же "окнах" или "колесах"), без работы с внешними факторами по ВЧ запросам в ТОП не выплывешь. Хотя в большинстве направлений вполне реально.
Инфографика: самые распространенные SEO-ошибки Рунета
Dmitro Grunt
2
комментария
0
читателей
Полный профиль
Dmitro Grunt - Кстати, у проектов которые продвигает Нетпик все тайтлы не более 65 символов? Или вы надеетесь что кто то послушает советов и отдаст вам часть трафика? :-)
7 причин не работать на биржах копирайтинга
Dasha Shkaruba
6
комментариев
0
читателей
Полный профиль
Dasha Shkaruba - Спасибо за мнение! Кстати, на бирже главреда прием анкет закрыт
Google.ru внесли в реестр запрещенных сайтов
Гость
1
комментарий
0
читателей
Полный профиль
Гость - Гон, все работает и будет работать. Да и пусть банят, будет как с рутрекером.
День рождения SEOnews: 12 лет в эфире!
Анна Макарова
0
комментариев
0
читателей
Полный профиль
Анна Макарова - Ура )
SEMrush: факторы ранжирования в Google в 2017 году
Анна Макарова
0
комментариев
0
читателей
Полный профиль
Анна Макарова - Уважаемый S1, я тоже понимаю, что есть такие люди, которые заметив допущенную неточность несутся на всех парусах продемонстрировать "силу" своего ума. Спасибо вам за пристальное внимание. Это поможет нам быть лучше.
Сердитый маркетолог: как вы сами хороните свой сайт, или 16 принципов, которые нужно усвоить заказчикам SEO
Руслан Латыпов
2
комментария
0
читателей
Полный профиль
Руслан Латыпов - Можно совершенно бесплатно заказать SEO-аудит своего сайта и получить все рекомендации по его продвижению a-erp.com/
Конкурс: угадайте пятерку лидеров рейтинга «SEO глазами клиентов 2017»
Оля
1
комментарий
0
читателей
Полный профиль
Оля - 1 Ingate 2 Wezom 3 Bynjg vtlbf 4 seo energy 5 директ лайн
ТОП КОММЕНТАТОРОВ
Комментариев
910
Комментариев
834
Комментариев
554
Комментариев
540
Комментариев
483
Комментариев
373
Комментариев
310
Комментариев
262
Комментариев
226
Комментариев
171
Комментариев
156
Комментариев
137
Комментариев
121
Комментариев
97
Комментариев
97
Комментариев
95
Комментариев
80
Комментариев
77
Комментариев
67
Комментариев
60
Комментариев
59
Комментариев
55
Комментариев
53
Комментариев
52
Комментариев
48

Отправьте отзыв!
Отправьте отзыв!