Cкрипт Google Adwords для перекрестной минусовки ключевых слов

Скрипт для google adwords

Принцип работы

Размещая контекстную рекламу рано или поздно сталкиваешься с проблемой того, что имея например два запроса

  1. купить окна пвх 
  2. купить окна пвх дешево

При запросе пользователя купить окна пвх дешево  в выдаче может показаться ( и ведь как назло показывается) первая фраза а не вторая, и по более дорой ставке. Это можно очень легко решить при помощи проставления минус-слова дешево в первую группу. Однако если в кампании тысяча групп вручную кросс-минусовка может занять как минимум неделю.

Решение

В Яндекс.Директ данная проблема решается при помощи встроенной функции перекрестной минусовки ключевых слов в Директ.Коммандер. К сожалению в Google AdWords  встроенных готовых решений пока нету.

К счастью на просторах интернета нашелся интересный скрипт для проведения перекрестной минусовки ключевых слов.

Однако используя исходный вариант скрипта я столкнулся с проблемой того, что скрипт рассчитан что в группе объявлений используется только одна фраза (могут быть разные типы соответствия одной фразы)

Так же заметил что данный скрипт минусует и предлоги, что мне не очень понравилось. Поэтому решил «допилить» данные недостатки.

Конфигурация скрипта.

var CampaignLabel = ‘[«cross_negative_key«]’;  —   это параметр ярлыка, который необходимо присвоить кампании/кампаниям, в которой необходимо провести кросс-минусовку

var arr  = ‘слово1, слово2,’;   —  сюда  пишутся слова, которые вы хотите исключить из минусовки, в моем случае это были предлоги

Как провести минусовку при помощи скрипта?

установка скрипта очень проста и займет всего несколько минут

  1. Для начала вам необходимо поставить ярлык cross_negative_key в кампанию/кампании где необходимо провести минусовку;
  2. Далее в «Массовые операции»  ->   «Скрипты» вам необходимо будет создать новый скрипт и разместить код (его копируете и окна ниже)
  3. Далее необходимо авторизоваться (AdWords сам предложит это сделать);
  4. При необходимости вы можете включить предварительный просмотр — таким образом вы сможете детально изучить что именно сделает скрипт в выбранной вами, при помощи ярлыка, кампании;
  5. Жмем «Выполнить скрипт» как правило это займет некоторое время, все зависит от того, как много групп объявлений есть в вашей.

Итого:
поставить ярлык кампании, скопировать скрипт и запустить его, дождаться пока скрипт сделает всю работу за вас)))

Это все!

Если возникли вопросы — задавайте в комментариях! С удовольствием помогу разобраться)

Скрипт перекрестной минусовки

 

  • Игорь Марполь

    Спасибо за этот инструмент. Попробую. Но не совсем понятно эта часть: «var arr — сюда пишутся слова, которые вы хотите исключить из минусовки, в моем случае это были предлоги»
    Это где в коде? В каком формате пишутся слова, подряд, через запятую, с новой строки и т.д.
    Буду благодарен за пояснения.

    • ivan

      В коде это строка 20

      «var KeyExclution = arr.split(‘, ‘);»

      предлоги я исключал по той просто причине что они не учитываются поисковыми системами, т.е.

      купить окна пвх минск
      купить окна пвх в минск

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

      Нет, слова просто пишутся через запятую с пробелом, переносы ставить не надо, смотрите по примеру уже вставленных предлогов (строка 6 в коде)

      • Игорь Марполь

        Понял спасибо)
        Немного не по теме, но возможно вы знаете ответ.
        Столкнулся с проблемой с минус словами. В яндексе, если есть минус слово и оно конфликтует с ключевой фразой, для этой фразы оно не работает. В гугле не так. Есть какая-то возможность внести отдельные минус слова добавленные на уровне кампании в исключения для отдельных групп объявлений?
        Спасибо)

        • ivan

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

          Как мне известно так в гугле сделать нельзя, единственное, что я могу вам посоветовать, при помощи Adwords Editor можно быстро перебросить из уровня кампании в уровень групп, и оттуда уже удалять

          • Игорь Марполь

            Так это опухнуть можно, как мне кажется)
            1200 ключевых слов и 5000 или 6000 минус слов после изменения по родам, падежам и числам.
            Кстати я правильно внес предлоги? А то я ява скрипт не знаю. https://uploads.disquscdn.com/images/b76d00a8862bfdeab7045d89eefd1ce6c2967836d3463882e9bf7ab6394037ee.png

          • ivan

            нет))) их надо было вносить в 6 строку))) я видимо не совсем правильно понял ваш вопрос про var arr, предлоги там уже были внесены по умолчанию)

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

          • Игорь Марполь

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

          • ivan

            Да, просто скопировать, добавить ярлык кампании и запустить ))

  • Игорь Марполь

    Сделал все по инструкции
    Добавил ярлыки для двух кампаний https://uploads.disquscdn.com/images/982d66e84fe3cbef24ed3245dc0602cb0c5b24fce00bdf44fb56185ee3171fa0.png
    При попытке посмотреть предварительный результат выдает ошибку https://uploads.disquscdn.com/images/e316ce4c0d41a7e6ad370a9845e8d228ebc084e3fd0afa4fa46f8c419ea7dedf.png

    • ivan

      не совсем верно пояснил видимо? надо исправить в статье))) нужно добавить ярлык key

      • Игорь Марполь

        Т.е. нужно изменить ярлык с var CampaignLabel на key?

        • Игорь Марполь

          Да поменял ярлык и процесс пошел)

          • ivan

            Здорово)) отпишитесь о результатах пожалуйста)

  • Игорь Марполь

    В предварительном просмотре после использования скрипта на 2 РК на поиске получилось 3272 изменения) У меня столько ключевых слов нет)))

  • Игорь Марполь

    В предварительном просмотре после использования скрипта на 2 РК на поиске получилось 3272 изменения) У меня столько ключевых слов нет))) https://uploads.disquscdn.com/images/93eb1b4c389a2b0b99c13cad189ca41b385a74de54015f7371bd609240ad0203.png

    • ivan

      запросто)) одно слово может быть минусом для нескольких групп) тем более у вас тут 2 кампании)))

  • Alex Golovko

    Пишет ошибку — конфликт ключевых слов

    • Just_User

      у вас в группе, по которой конфликты выдает сколько фраз размещено?

      • Alex Golovko

        Везде выдает. В группы не по SKAG сделаны. На нескольких группах хотели проверить (отработал быстрее) и в итоге везде ошибку выдает эту

        • Alex Golovko

          Или данный скрипт тоже под SKAG заточен? Типы соответствия разные везде в наших группах

          • Just_User

            нет, данный скрипт переделывался с один ключ=одна группа на «одна группа = несколько ключей»
            при запуске старой версии скрипта (для SKAG) при нескольких ключах в группе он создавал кучу конфликтов,

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

            Спасибо за обнаруженную ошибку, на днях допилю что бы Adowrds не жаловался)

  • Kirill Onatskiy

    А ничего ли страшного не произойдет если у меня слова с модификатором широкого соответствия? Не будет ли конфликта знаков + и — ?

    Вот выбило ошибку в некоторых. Но 2/3 изменений прошли успешно. Где я накосячил?
    https://uploads.disquscdn.com/images/3a7c3a19fea53287717d0defa7269b9cf75971cd2f83265e7c3b040994b46d7b.png

    • Just_User

      а у вас минус-слова вставлены прямо в фразу?)
      советую на будущее делать минусовку на уровне группы, а если в одной группе разным фразам разные минуса — то разделять на еще несколько групп

  • Антон Щавинский

    Отличный скрипт. Спасибо! Можно ли этот скрипт использовать для МСС-аккаунта?

    • Just_User

      Нет для MCC он не рассчитан,

      но спасибо за вопрос, доделаю и для MCC, как-то упустил из вида при разработке

      • Антон Щавинский

        Добрый день, не появился еще случайно вариант для МСС?

  • Марк Воздвиженский

    Отличный скрипт, спасибо

  • Анастасия

    TypeError: Cannot read property «adGroupName» from undefined Пишет такую ошибку. Почему?

    • Just_User

      Отправьте скрин «журнала» пожалуйста и название группы, на которой выбивает ошибку

      • Денис
        • Just_User

          попробуйте создать 2 группы в кампании вместо 1, что тогда будет отображать?

          • Денис

            Тоже самое. Но я просто сделал копию группы.
            https://uploads.disquscdn.com/images/438a9a9c6841794886e8e6b5c254a7c81d835d6a3df8b9bd387018a732559503.jpg

          • Денис, как-то решили проблему с ошибкой undefined line 63? У меня в одном аккаунте работает на широких ключах, а на фразовых не работает. Есть решение?

          • Денис

            Да, просто нужно ключи перевести в широкое соответствие, сделать кроссминусацию, а потом уже перевести в нужное соответствие. Тогда ошибки не будет

          • Денис

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

          • Денис

            Может быть ошибка потому что ключевики в «кавычках»?

          • Just_User

            Запросто! Возможно даже в этом и заключается ошибка!!

  • Анастасия

    TypeError: Cannot read property «adGroupName» from undefined. (line 61) Выдает такую ошибку. Почему?

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

    Сделал тест и показал на скриншотах.
    Как надо и не надо: http://dl4.joxi.net/drive/2017/01/16/0000/1795/1795/95/f0836f0b43.png
    Как скрипт делает по факту (не так, как надо): http://dl3.joxi.net/drive/2017/01/16/0000/1795/1795/95/aa6e2af703.png

    Для того, чтобы скрипт стал полностью работоспособным, надо проверять каждый ключевик в группе, в которую добавляется минус-слово на предмет того, есть ли в других группах такой ключевик, включающий это минус-слово. Если нету — минус-слово добавлять нельзя. Чтобы не отбрасывать слишком много минус-слов, надо разбирать исследуемый ключевик на слова и смотреть вхождение каждого из слов. Таким образом учитывается возможный разный порядок слов в широком соответствии.

    • Just_User

      Большое спасибо! учту при доработке!

    • Just_User

      Никита, можно перед публикацией на сайте я вам в личные сообщения отпишу что бы вы протестировали?

      • Ok, только не обещаю мгновенный ответ

  • VG

    Исключать бы с проверки слова у которых статус «мало запросов»

  • Коробачевский Павел

    Что я делаю не так? вроде все по инструкции

    Not authorized
    This script is currently not authorized to run in your account.

    Please start the authorization process again.

    • Just_User

      Вам необходимо авторизоваться в аккаунте adwords (для скриптов необходима отдельная авторизация)
      https://uploads.disquscdn.com/images/7451144b73d4453491d9fec755dfb02f48a945575319b6a1516ccdfc2cf23ad8.png

      • Коробачевский Павел

        в тот то и вопрос, что я выполняю последовательность действий по инструкции
        1) копирую скрипт
        2) сохраняю его.
        3) нажимаю кнопку выполнить
        4) скрипт сам требует аторизацию — я нажимаю кнопку — дальше — allow
        5) получаю сообщение
        Not authorized
        This script is currently not authorized to run in your account.

        • Just_User

          Отправьте скриншот пожалуйста

        • Just_User

          Скорее всего у вас делегированный доступ и недостаточно прав для запуска скрипта

  • Сергей Калиниченко

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

    например,
    грузовые перевозки в санкт петербурге
    грузовые перевозки петербург

    не переминусовались.

    Конечно, очевидно, что это связано со словоформами, поэтому без претензий. Все равно получилось хорошо — спасибо большое!

    Единственное, хотелось бы понять, где можно посмотреть о чем в ошибке https://uploads.disquscdn.com/images/029428fe1b2e367e1d59a9c26b91393f909261a711bd90da2740c11786576e7e.png

    • Just_User

      Большое спасибо за отзыв!

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

      Это ошибка технического характера, на РК она не влияет

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

      На днях допишу еще один скрипт, потом вернусь и подправлю все недостатки этого, уже с учетом вышеописанных комментариев

      В принципе он и публиковался с просьбой проверить и протестить у себя)))

      • Сергей Калиниченко

        Понял, спасибо!

        Насчет кросс-минусации «как в Директе», на самом деле встречал на просторах интернета мануал о том, как делать такие склонения через excel. В общих чертах: разделить по столбцам, транспорнировать, просклонять и загрузить.
        Конечно, это не плохо, но у этого метода есть существенный минус. Богат и могуч русский язык, поэтому определенные ключ в определенных словоформах могут перекрывать целевые слова.
        Первый пример, который приходит на ум «рост» и «ростов».
        А учитывая, что в ГА приоритет у минус слов, а не у ключей, это может подпортить жизнь.

        С другой стороны, для честности, я не сравнивал эти методы по эффективности. Не исключаю, что эффективность склонений выше, чем проблема или шанс потери ключей.

  • Денис Давыдов

    Спасибо за скрипт!
    Подскажите пожалуйста, можно ли как то модифицировать его что бы он не учитывал группу или ключи у которых мало запросов или они приостановленны?

    • Just_User

      Пожалуйста))

      Которые остановлены — точно можно
      Касаемо статуса «мало запросов» к сожалению скорее всего нет, т.к. Google не предоставляет данный параметр на данный момент

      вот список всех параметров на уровне группы
      https://developers.google.com/adwords/scripts/docs/reference/adwordsapp/adwordsapp_adgroup?hl=ru#methods

      А для ключей google отображает только 4 статуса:

      1. Одобрено
      2. Отказано
      3. Отправлено на модерацию
      4. Модерация

      Статусы вроде «Мало запросов», «Ограничено бюджетом» увы не выводятся

      https://developers.google.com/adwords/scripts/docs/reference/adwordsapp/adwordsapp_keyword?hl=ru#getApprovalStatus_0

      • Денис Давыдов

        В каком параметре нужно что-то указать, чтобы он не учитывал остановленные?

        • Just_User

          Сформулируйте пожалуйста задачу более конкретнее, вам необходимо что бы минус-слова не добавлялись в остановленные кампании? или что бы остановленные кампании не использовались при анализе для добавления минус-слов?

          • Денис Давыдов

            Мне нужно сделать кросс-минусовку на уровне кампании без учета остановленных групп.

        • Just_User

          А разве сейчас он не исключает остановленные группы?

          • Денис Давыдов

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

        • Just_User

          var keywordIterator = adGroup.keywords().withCondition(«KeywordMatchType = BROAD»).get();

          замените на

          var keywordIterator = adGroup.keywords()
          .withCondition(«KeywordMatchType = BROAD»)
          .withCondition(«Status = ENABLED»)
          .get();

          и

          function addExKeyword(adGroupId, key) {
          var adGroupIterator = AdWordsApp.adGroups()
          .withCondition(‘Id =»‘ + adGroupId + ‘»‘)
          .get();

          замените на

          function addExKeyword(adGroupId, key) {
          var adGroupIterator = AdWordsApp.adGroups()
          .withCondition(‘Id =»‘ + adGroupId + ‘»‘)
          .withCondition(«Status = ENABLED»)
          .get();

          должно работать, Увы проверить на данный момент на данный момент не могу, т.к. пишу с планшета

          • Денис Давыдов

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

          • Just_User

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

            Дайте пожалуйста ваш email, я вам напишу в почту, как сделаю

          • Денис Давыдов

            Хорошо, буду ждать. slim20011988@gmail.com Спасибо еще раз за скрипт, очень помогает)))

          • Дядя Вадя

            Добрый день скрипт уже переделан? Чтоб не минусовал остановленные фразы в группах?

  • Виталий Кулинич

    Добрый день, если переписали скрипт, сбросьте пож-ста на почту:
    egroup057@gmail.com
    Спасибо, за проделанную работу.

  • Антон Кривоносов

    Здравствуйте. При выполнении скрипта выбивает ошибки. http://prntscr.com/et7jgs

    Что с этим делать?

  • Антон Кривоносов

    Скрипт выбивает ошибки — недопустимое ключевое слово.
    Вот скрин из журнала: http://prntscr.com/et7lql

  • vabz

    скрипт неправильно работает. примените его к двум группам с фразами: группа 1 — фраза «лопата», группа 2 — фраза «лопата купить москва» и поймете в чем суть ошибки

    • Just_User

      Здравствуйте. скрипт и публиковался с просьбой проверить и протестить у себя)))

      • vabz

        фикс сделаете? )))))))))

  • Oles Voytovich

    Скрипт класный, спасибо, но не всегда корректно минусует , вот например скриншот http://prntscr.com/gqo1xn , здесь он ничего не переминусовал

    • Just_User

      большое спасибо за комментарий)

      • Oles Voytovich

        будете фиксить?)

        • Just_User

          да, увы нету свободного времени))

          пока работаю над тем что бы минусовку из екселя онлайн делать для MCC + пытаюсь со склонениями вопрос решить

  • Luanna Kolyada

    Отличный скрипт, раньше пользовалась им, но сейчас почему-то стал выдавать ошибку:
    «TypeError: Cannot read property «adGroupName» from undefined. (line 63)» 🙁