Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
Россия +7 (495) 139-20-33
17 Февраля 2016 в 13:51

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

Россия +7 (495) 139-20-33
62 35064
Подпишитесь на нас в Telegram
Андрей Педченко
Руководитель отдела контекстной рекламы 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/


62 комментария
Подписаться 
Подписаться на дискуссию:
E-mail:
ОК
Вы подписаны на комментарии
Ошибка. Пожалуйста, попробуйте ещё раз.
  • Генка
    1
    комментарий
    0
    читателей
    Генка
    больше года назад
    На долларовом аккаунте работает скрипт? У меня не работает, пишет ошибка line 13 вот тут kw2.setMaxCpc(kw3 * 1.05);
    -
    0
    +
    Ответить
  • Кирилл
    1
    комментарий
    0
    читателей
    Кирилл
    больше года назад
    добрый день! Отлично все описано.Сделал все по инструкции, но скрипт не проходит авторизацию (
    Посоветуйте что можно сделать?
    -
    0
    +
    Ответить
  • Виталий Кулинич
    3
    комментария
    0
    читателей
    Виталий Кулинич
    больше года назад
    Андрей возможно ли с вами как то связаться для написания индивидуального скрипта?
    -
    0
    +
    Ответить
  • Виталий Кулинич
    3
    комментария
    0
    читателей
    Виталий Кулинич
    больше года назад
    Что то изменений нету в данном скрипте
    -
    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 посмотрите, для этого есть отдельный метод.
          -
          1
          +
          Ответить
          • 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
    +
    Ответить
    • Андрей Педченко
      23
      комментария
      0
      читателей
      Андрей Педченко
      Гость
      больше года назад
      Авторизация проходит в течение 2-3 секунд. В кампании ничего не надо менять.
      -
      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 рублей?

    Чем этот биддер отличается от стратегии в разделе Общая библиотека >Стратегии назначения ставок >Вверху первой страницы результатов поиска
    ???
    -
    2
    +
    Ответить
    • Андрей Педченко
      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);}}

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

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