17 Февраля 2016 в 13:51

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

57 18109
Андрей Педченко
Специалист по контекстной рекламе,
Mello

Если Вы занимаетесь контекстной рекламой в 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

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

2.png

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

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

3.png

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

4.png

Не используем мы их потому, что по этим правилам ставка может только повышаться до необходимого уровня, при таком подходе мы можем переплатить за клики. Например, вчера для конкретного ключевого слова для показов вверху первой страницы была ставка 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 рублей.

11.png

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

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/


57 комментариев
Подписаться 
Подписаться на дискуссию:
E-mail:
ОК
Вы подписаны на комментарии
Ошибка. Пожалуйста, попробуйте ещё раз.
Поделиться 
Поделиться дискуссией:
  • Сергей
    4
    комментария
    0
    читателей
    Сергей
    3 месяца назад
    Странно, однако не вставляется полный скрипт, а тот что вставляется - с ошибками.
    Может дадите почту на которую я смогу выслать скрипт для анализа?
    Благодарю
    -
    0
    +
    Ответить
    Поделиться
  • Сергей
    4
    комментария
    0
    читателей
    Сергей
    3 месяца назад
    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(){                                  
      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 месяца назад
    Здравствуйте, Андрей!
    Как-то совершенно не обладаю знаниями в программировании(( Однако понимаю важность и необходимость того что вы сделали))
    В общем, объединил немножко инфо из ваших кодов, но выдает ошибку.
    Цель попасть в ТОП вверху страницы и одновременно не превысить бюджет 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
    6 месяцев назад
    Здравствуйте! Спасибо за скрипт! Так как данные о цене первой страницы не совсем точные, можно ли в скрипте сделать изменения чтобы не было показов наверху?
    -
    0
    +
    Ответить
    Поделиться
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Raimonds
      3 месяца назад
      Вы можете использовать метод .getFirstPageCpc();
      А в идеале можно написать скрипт или найти решение в справке adwords scripts , который назначает ставку с учетом ранее занимаемой позиции объявления.
      -
      0
      +
      Ответить
      Поделиться
  • Николай
    6 месяцев назад
    Здравствуйте, применил данный скрипт к компании, при выполнении в сводке указанно "завершено без изменений" Это значит где то ошибка? или нужно подождать какой-то период времени?
    -
    0
    +
    Ответить
    Поделиться
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Николай
      6 месяцев назад
      Попробуйте изменить пару ставок вручную и снова запустить скрипт, изменения должны появиться.
      -
      0
      +
      Ответить
      Поделиться
  • Константин Олегович
    4
    комментария
    0
    читателей
    Константин Олегович
    6 месяцев назад
    и с пробелами или со спецсимволами
    -
    0
    +
    Ответить
    Поделиться
  • Константин Олегович
    4
    комментария
    0
    читателей
    Константин Олегович
    6 месяцев назад
    а если у меня название кампании на русском - так и писать?
    -
    0
    +
    Ответить
    Поделиться
  • Константин Олегович
    4
    комментария
    0
    читателей
    Константин Олегович
    6 месяцев назад
    как распечатать комментарии?

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


    -
    0
    +
    Ответить
    Поделиться
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Семен
      6 месяцев назад
      Такой возможности нет, но Вы можете задавать ставку для показа вверху страницы и к ней применять корректировки.
      -
      1
      +
      Ответить
      Поделиться
      • Семен
        Андрей Педченко
        6 месяцев назад
        У меня задача - держать позицию до 1.5. Можно изменить ваш скрипт так, чтобы он повышал ставку, если средняя позиция ниже 1.5. Но тогда проще правила использовать, как мне кажется.
        -
        0
        +
        Ответить
        Поделиться
        • Андрей Педченко
          23
          комментария
          0
          читателей
          Андрей Педченко
          Семен
          6 месяцев назад
          Вы можете добавить условие, по которому будет отдельно повышаться ставка для слов с позицией ниже 1,5. В справке AdWords Scripts посмотрите, для этого есть отдельный метод.
          -
          2
          +
          Ответить
          Поделиться
          • Anton Stremovskyy
            2
            комментария
            0
            читателей
            Anton Stremovskyy
            Андрей Педченко
            5 месяцев назад
            // Позиция рекламного объявления которую пытаемся занять.
            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
            +
            Ответить
            Поделиться
  • Гость
    6 месяцев назад
    Добрый день! Подскажите пожалуйста для особо одаренных, скопировал Ваш скрипт без изменений, указал название своей кампании, вставил ...
    Теперь вопрос: для того чтобы скрипт заработал надо пройти авторизацию. Как долго этот процесс происходит?
    И скажите с самой кампанией надо что то менять?
    -
    0
    +
    Ответить
    Поделиться
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Гость
      6 месяцев назад
      Авторизация проходит в течение 2-3 секунд. В кампании ничего не надо менять.
      -
      0
      +
      Ответить
      Поделиться
  • Maks Sh
    2
    комментария
    0
    читателей
    Maks Sh
    6 месяцев назад
    Здравствуйте! А как-то можно допилить данный замечательный скрпит, чтобы он ориентировался на конкретно указанные позиции?
    -
    1
    +
    Ответить
    Поделиться
    • Anton Stremovskyy
      2
      комментария
      0
      читателей
      Anton Stremovskyy
      Maks Sh
      5 месяцев назад
      // Позиция рекламного объявления которую пытаемся занять.
      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
      6 месяцев назад
      Вы можете использовать один из методов получения ставки, чтобы занимать либо верхнюю часть страницы, либо нижнюю часть:
      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
    читателей
    Станислав Виленский
    6 месяцев назад
    Получается биддер ставит мин.цену для показа на первой странице?

    А если задача показываться на первой вверху, какое условие нужно добавить/заменить, при этом ограничив ставку в 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
        читателей
        Андрей Педченко
        Гость
        6 месяцев назад
        В целом такой скрипт повторяет названную выше стратегию, но имеет ряд преимуществ: Вы сами настраиваете режим выполнения, - хоть каждый час, стратегия это не гарантирует. Вы можете в ручную выполнить скрипт в любой момент. Вы можете указать множество дополнительный условий и критериев отбора ключевых слов.
        -
        0
        +
        Ответить
        Поделиться
  • Гость
    6 месяцев назад
    Скрипт пропускает удаленные и остановленные группы объявлений?
    -
    0
    +
    Ответить
    Поделиться
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Гость
      6 месяцев назад
      У остановленных фраз меняет ставку, у удаленных ничего не меняет. В журнале выполнения может появляться ошибка о том, что фраза удалена, но код продолжает выполняться дальше.
      -
      0
      +
      Ответить
      Поделиться
  • Гость
    6 месяцев назад
    Можно ли запустить скрипт сразу на несколько кампаний? Если, да то как изменить код нужно?
    -
    0
    +
    Ответить
    Поделиться
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Гость
      6 месяцев назад
      Также есть продвинутое готовое решение developers.google.com/adwords/scripts/docs/solutions/multi-bidder
      -
      0
      +
      Ответить
      Поделиться
    • Olga Sidorova
      1
      комментарий
      0
      читателей
      Olga Sidorova
      Гость
      6 месяцев назад
      Мы сделали вот таким образом (спасибо автору скрипта):
      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
        6 месяцев назад
        Ольга, спасибо! Чтобы занимать верхнюю часть первой страницы надо использовать метод .getTopOfPageCpc(); вместо .getFirstPageCpc();

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

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

    Т.е если цена больше 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
        +
        Ответить
        Поделиться

Отправьте отзыв!
X | Закрыть