Как использовать скрипты в контекстной рекламе | Penguin-team

Скриптология Penguin-team: как скрипты Google Ads делают работу продуктивнее и что нужно для их внедрения

19.10.2018
21 минута
Google Ads, Scripts, Контекстная реклама,
1489

Скрипты в контекстной рекламе — тема, которую все обходят стороной. С одной стороны это понятно: работа с кодом выглядит пугающе сложно для не-разработчиков. С другой стороны, скрипты способны в 2, в 3, в 5 раз сокращать затраты времени на рутинные задачи; они очень сильно расширяют возможности РРС-специалиста; с ними продуктивность вырастает просто мгновенно. Так почему бы не разобраться в этой теме раз и навсегда?

Перед вами абсолютно новый гайд — скриптология от Penguin-team. Он поможет разобраться:

  • почему стоит внедрять скрипты;
  • зачем в них разбираться;
  • какие функции они могут выполнять;
  • как внедрять скрипты в Google Ads;
  • какие основные термины про скрипты важно знать;
  • как читать скрипт РРС-специалисту.

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

Прокачивайтесь и будьте продуктивнее вместе с нами!

Почему стоит внедрять скрипты в Google Ads

Внедрение скриптов Google Ads в аккаунт — это важный аспект работы специалиста по контекстной рекламе. Чем больше развивается рынок, тем острее стоит вопрос автоматизации и оптимизации процессов. Тут и помогут скрипты Google Ads.

Правда, есть несколько нюансов, которые мешают их системному внедрению:

  1. Скрипты из свободного доступа требуют кастомизации под каждый частный случай — а это очень неудобно, если нет бюджета на программиста или сам РРС-специалист не разбирается в JavaScript.
  2. Мануалы в сети пишутся программистами для программистов, поэтому РРС-специалисту в них разобраться непросто. Понятные справочники для не-программистов в основном написаны на английском языке.
  3. Многие скрипты по Google Ads, которые можно найти на freeadwordsscripts.com или других сайтах, очень устарели: в обновленном интерфейсе Ads большинство функции можно реализовать и без них.
  4. Скрипты, написанные в 2008 году и раньше, обращаются к переменным, которых с 2016 года не существует.

Все это приводит к тому, что РРС-специалист, который хочет сам разобраться в скриптах, находит много противоречивой информации, один раз ставит не срабатывающий скрипт… А потом забрасывает это направление полностью, «потому что сложно».

Мы в Penguin-team давно используем скрипты в своей работе. А несколько последних месяцев мы искали, отрабатывали, кастомизировали и описывали всевозможные скрипты для РРС-специалистов, чтобы подготовить «Скриптологию Penguin-team» для вас. 

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

Зачем разбираться в скриптах

Представьте: вы обнаружили, что в alpha-кампании вы получаете высокий коэффициент конверсии по приемлемой цене при средней позиции 1,5. Чтобы удержать эту позицию, нужно вручную менять ставки каждый день по определенному алгоритму, чтобы не завышать и не занижать их. Это довольно времязатратно… Особенно если в работе 5+ аккаунтов. А уж если их больше 10, то на такое ручное управление ставками времени не останется вообще!

Решить этот вопрос помогает скрипт Position Control, который будет поднимать и снижать ставки, чтобы быть на нужной позиции. При этом он, конечно, учитывает максимальный предел ставки и имеет динамический шаг (% увеличения и уменьшения ставки): чем дальше положение от целевой позиции, тем больше % изменения ставки.

Рисунок 1

В первом блоке есть спецификации скрипта:

  • «tcc1.5» означает, что скрипт должен держать позицию 1,5 по РК;
  • «tcb10» — что верхний предел ставки не должен превышать 10 у.е.

Во втором блоке можно увидеть результат достижения позиции на 9 день работы скрипта. Из трех кампаний целевая позиция была достигнута в двух.

Только внедрение этого скрипта может увеличить продуктивность и точность специалиста по контекстной рекламе и сделать его более конкурентоспособным на рынке. А ведь полезных скриптов намного больше!

Где использовать скрипты

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

  • Bidding — оптимизируют ставки;
  • Reports — предоставляют полезные отчеты для оптимизации аккаунта;
  • Managing — вносят изменения в РК, например, добавляют минус-площадки в Display.

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

Как организовать аккаунт Ads для работы со скриптами

Усредненный алгоритм внедрения скрипта в аккаунт Google Ads выглядит следующим образом:

  1. Определить рутинные процессы: понять, какой процесс является монотонной работой, которая регулярно повторяется.
  2. Определить альтернативы. Постараться решить вопрос без скрипта: автоматизированными правилами, возможно, платным софтом.
  3. Отыскать скрипт, способный выполнить поставленную задачу.
  4. Разобраться в работе скрипта. Для этого пригодится техническая инструкция, написанная ниже.
  5. Кастомизировать скрипт, в случае необходимости.
  6. Поставить скрипт в аккаунт Google Ads.
  7. Проверить работу скрипта.
  8. Запустить скрипт.
  9. Проверить результаты, в случае необходимости — откорректировать скрипт.

Шаги 1-3 у каждого специалиста/компании будут свои. С шагами 4 и 5 поможет разобраться техническая часть. Поэтому сейчас начнем с шага 6.

6. Поставить скрипт в аккаунт

В зависимости от доступа к аккаунту, существует 2 способа установки скрипта:

  1. Загрузка скрипта напрямую в аккаунт по прямым доступам. Подойдет для частных клиентов или для тех, кто дал прямой доступ (логин и пароль) к своему аккаунту.
  2. Загрузка через MCC. Подойдет для агентств и outoffice-специалистов.

Первый способ самый простой, в нем нет подводных камней. 

Во втором способе — загрузке через МСС — важно соблюдать некоторые правила:

1. Доступ к аккаунту должен быть установлен на уровне администратора.

Рисунок 2

2. Если речь идет о агентстве, то желательно, чтобы у каждой команды (или специалиста) был свой MCC, в который будут загружаться скрипты. Т.е. структура следующая:

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

#1 На вкладке «Инструменты» переходим в раздел «Скрипты».

Рисунок 3

Здесь есть 3 основных блока:

Блок 1. Добавление скриптов и название уже добавленных.

Блок 2. Автор скрипта и частота отработки. Каждый скрипт должен отрабатывать в аккаунте с определенной частотой (обычно рекомендуемую частоту пишут в спецификации к скриптам).

Блок 3. Дата добавления/изменения, статус и активность (редактирование/удаление).

#2 Добавление скрипта.

Рисунок 4
  • четко и внятно называем скрипт, чтобы было понятно всем, кто будет работать с аккаунтом;
  • удаляем строку «function main() {}» — в шаблонах скрипта уже есть эта строка;
  • авторизируемся.

#3 Проверка скрипта и внесение своих переменных.

Для этой задачи рекомендуем использовать www.sublimetext.com — этот софт, который удобно читает JS-код.

Рисунок 5
  • в первой части скрипта обычно указывают автора и кратко описывают суть работы;
  • во второй части нужно вводить свои переменные, ссылки на Google Таблицы с данными, ID кампаний и так далее;
  • в третьей части указывают, в каком формате нужно вводить значения.

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

7. Проверить работу скрипта

Каждый скрипт перед запуском стоит проверить. Если все хорошо, то в разделе изменений можно будет увидеть, что сделал скрипт в аккаунте. Если будут какие-то ошибки в скрипте, они будут отнесены в раздел «Логи», где будет указана причина, почему он не сработал и что стоит изменить.

Рисунок 6

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

Чтобы работа со скриптами удалась, рекомендуем следовать правилам:

  • правильно организовывать свой аккаунт MCC;
  • получить административный уровень доступа к аккаунту;
  • внимательно изучить спецификацию (описание) скрипта;
  • внимательно вносить переменные в скрипт;
  • перед запуском скрипта обязательно делать проверку через «Просмотр»;
  • запускать скрипт (установить частоту отработки);
  • по истечении времени анализировать эффективность работы;
  • принимать решение о дальнейшей работе скрипта в аккаунте.

Введение в JavaScript

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

Вот примеры использования JavaScript в браузере:

  • создание новых HTML-тегов или удаление существующих, изменение стилей элементов, скрытие и показ элементов;
  • реагирование на действия посетителя, обработка клики мыши, перемещения курсора, нажатия на клавиатуру;
  • отправка запросов на сервер и загрузка данных без перезагрузки страницы (эта технология называется «AJAX»);
  • получение cookie, запрашивание данных, выведение сообщений…

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

#1 Переменные

Когда мы работаем со скриптом, мы в любом случае работаем с какими-то данными. Где они хранятся? Как раз таки в переменных. Переменная — это своего рода контейнер для кусочков данных, которые вы обрабатываете при помощи скрипта.  Если взять любой скрипт, то он будет состоять на 95% из переменных.

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

К примеру:

Во строке 2 и 10 есть слово var — это и есть обозначение переменной, то есть контейнера, в котором будут храниться данные. Сами переменные стоят после var — это переменные keywords и keyword. После «=» стоит значение переменной — собственно, сами данные, которые мы используем.

Правила составления имени переменной:

  • имя может состоять из букв, цифр и символов «$» и «_»;
  • первый символ не должен быть цифрой;
  • регистр букв имеет значение: apple и AppLE — две разные переменные. Например, если вы сохранили данные в переменную apple, а ниже в коде пытаетесь получить их оттуда при помощи запроса к AppLE, то вместо значения вы получите undefined (значения нет).

Важно! Среди переменных вы можете встретить константу — это величина, которая не изменяется на протяжении всего скрипта и, как правило, именуется только большими буквами. Пример того, как она обычно обозначается:

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

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

#2 Типы данных

Есть 5 «примитивных» типов: number, string, boolean, null, undefined. Плюс 6-й тип — объекты object.

  1. Число «number».

Существуют специальные числовые значения:

  • Infinity (бесконечность) получается при делении на ноль;
  • NaN (not-a-number, не-число) получается при ошибке вычислений, к примеру, умножении на бесконечность.
  1. Строка «string».

Важный нюанс! Запись формата var string = ‘123’ — это тоже строка, не число.

  1. Булевый (логический) тип «boolean».

У него всего два значения: true (истина) и false (ложь). Как правило, такой тип используется для хранения значений типа да/нет.

  1. Специальное значение «null».

Значение null не относится ни к одному из типов выше. Оно образует свой отдельный тип, состоящий из единственного значения null. Используется для того, чтобы обозначить переменной начальное «пустое» состояние (потому что 0 — это уже значение). 

К примеру, у вас есть корзинка для яблок, но в ней яблок еще нет, то есть их 0. А NULL в таком случае — это когда нет даже самой корзинки.

ВАЖНО! 0 — это не то же самое, что «пусто» ! 0 — тоже результат.

  1. Специальное значение «undefined».

Значение undefined, как и null, образует свой собственный тип, состоящий из одного этого значения. Оно имеет смысл «значение не присвоено». Если переменная объявлена, но в нее ничего не записано, то ее значение как раз и есть undefined.

  1. Объекты «object».

Первые 5 типов называют «примитивными». Особняком стоит шестой тип: «объекты». Он используется для коллекций данных и для объявления более сложных сущностей.

Объявляются объекты при помощи фигурных скобок {…}, например:

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

#3 Функция

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

Пример объявления функции:

Сначала идет ключевое слово function → дальше имя функции → список параметров в скобках (в примере выше он пустой) и тело функции — код, который выполняется при ее вызове.

Объявленная функция доступна по имени, например:

Этот код выведет сообщение два раза. Уже здесь видна главная цель создания функций — избавление от дублирования кода.

Если понадобится поменять сообщение или способ его вывода, достаточно изменить его в одном месте — в функции, которая его выводит.

Интересно! Весь код скрипта в целом всегда должен быть помещен внутри функции main().

image8

Добавление всего скрипта в функцию main — требование самого Google. Это нужно, чтобы Google всегда знал, что нужно запустить, чтобы ваш скрипт работал. Именно внутри этой функции система запускает код. Без этого был бы полный хаос: каждый бы человек называл функцию, как ему нужно. Поэтому все, что вы пишете, все равно должно быть запущено внутри main — иначе работать не будет.

Иногда вы можете увидеть и такой вид скрипта:

image12

Иногда разработчики «оборачивают» весь необходимый код в функцию «для красоты» и уже ее помещают в основную функцию от Google под названием main.

Оба варианта допускаются и работают.

Структура скрипта Google Ads. Основные понятия

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

Структура скрипта

Скрипт может выглядеть вот таким образом:

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

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

image13

Как видите, нужный нам код был вынесен в отдельную функцию с названием func(), но в коде есть еще скрытые места.

В самом низу скрипта есть 3 выделенных блока — это тоже функции, но уже другие, вспомогательные, которые выполняют определенную работу в рамках одного большого скрипта.
В рамках одного скрипта может быть неограниченное количество собственных функций. Эти функции могут быть несколько раз вложены друг в друга. Если вы видите подобные функции, значит, где-то дальше в этом коде они описаны. Найти их среди кода можно через поиск в браузере.

Обратите внимание: сколько бы функций вы ни вкладывали друг в друга, они не заработают, если самую главную функцию не поместить в main. Функция MAIN —  точка запуска.

Основные понятия в рамках скриптов Ads

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

Пример:

image10

Метод — это специальная функция, которая скрыта внутри сущностей Ads. Она написана со стороны Google и ее реализация от нас скрыта. Название «метод» пошло от специфики написания кода. Если не слишком глубоко рассматривать программирование, то объясняется это так:

  1. Код можно писать в функциональном и в объектно-ориентированном стилях.
  2. Когда вы пишете свой код в скриптах Google, вы пишете в функциональном стиле.
  3. Код, написанный самим Google, оформлен в объектно-ориентированном стиле (ООП). Там уже используется название «метод».

Пример:

image9

Теперь про сущности. Сущность — понятие, которым очень любят сыпать разработчики. На самом деле сущность — это описание элементов, которые можно объединить одним названием. К примеру, элементы стол, стул, тумбочка — это сущность «мебель»; Коля, Алена, Марина — это сущность «Пингвины»; мама, папа, я — сущность «семья». Таким образом, все составляющие аккаунта разбиты на сущности.

Вот пример в коде:

image11

А вот пример из документации. Тут вы можете увидеть, как много сущностей в принципе существует в рамках аккаунта:

image4
Красный — сущности. Желтый — элементы, которые относятся к сущности. К примеру, объявление — это сущность, а слова внутри — это ее элементы

Это основные понятия, которые важно понимать в первую очередь. Но, конечно, список на этом не заканчивается. Если копать в детали, выясняется, что слово «метод» может иметь абсолютно разные значения в разных случаях.

К примеру, вот несколько методов:

  • withCondition( )
  • withIds( )
  • forDateRange( )
  • orderBy( )
  • withLimit( )

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

Например:

Чтобы получить 50 аккаунтов с меткой, которая содержит слово «accounts», мы используем вот такой прием:

Вот пример еще одного кода, где используются методы:

Вот уже пример с другим методом:

image1

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

Цикл — это обход определенного количества данных (или выполнения набора команд) определенное количество раз. То есть повторение действия.

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

Вот краткий пример:

image3

Но это уже, как говорится, совершенно другая история…

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

Топ ошибок в скриптах

№1. «Я скопировал, а оно не работает»

При копировании скрипта из интернета (особенно с текстовых страниц сайтов), обращайте внимания на кавычки, которые расставлены в коде. Например, вы видите на сайте код вот в таком формате:

image2

Копируете его себе, вставляете… Но что то идет не так:

image5

А ларчик просто открывался. Посмотрите, какие кавычки у вас стоят.

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

Попробуем исправить код и посмотрим, что будет теперь:

image7

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

Будьте бдительны, мойте руки перед едой и копируйте код правильно.

№2. «Впихнуть невпихуемое»

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

Например вы написали скрипт, которые меняет ставки у слов. Но потом вдруг обнаружилось, что он также выключает объявления или же останавливает кампании, хотя его назначение — это только смена ставки. Так делать не стоит.

№3. «Сейчас я сделаю другим больно»

Это ошибка касается не функциональности скрипта, а удобности его использования. И относится уже не столько к пользователям скриптов, сколько к их создателям.

Что имеется в виду? Давайте посмотрим на пример:

image6

Что мы имеем? Вот тут скрипт говорит нам: «Если тебе что-то не нужно, просто напиши названия сюда». Но вот беда: названий-то может быть и 100 штук. А еще вы можете работать через MCC-аккаунт с десятком клиентов, и каждому нужно поставить этот скрипт и руками написать «то, что не нужно».

Юзер-френдлинесс этого скрипта стремится к абсолютному нулю, как вы понимаете.

Так вот, если мы пишем для себя и нам не лень вручную перечислять названия, или же мы «как умею, так и пишу» — то да, вопросов нет, можно делать скрипт каким-угодно. Но! Но если планируется делать скрипт достоянием общественности, важно довести его до нормальной кондиции.

Конкретный совет: завязывайте скрипты на метки (label). Метку прицепить гораздо быстрее, чем перечислить 100 наименований. Так что вывод этого пункта: делайте (или переделывайте) по-человечески.

№4. «Книги уже никто не читает»

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

Сразу пример, потом слова:

Запись экрана (30.09.2018 12-43-00)

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

Разрабатываете скрипты и выкладываете их в свободный доступ? Пожалуйста, оставляйте к ним комментарии — это поможет ориентироваться в коде любому человеку. Иначе зачем это все?

№5. «Тестировать — не мое дело»

Скачать, поставить и запустить скрипт очень легко. Но насколько вы уверены, что он сработает так, как нужно? А может быть скрипт удалит все объявления? А может поставит заоблачные цены в Google Shopping?

Если не хотите проколоться на чем-то подобном, проверяйте скрипт в режиме просмотра (preview) перед запуском. Это достаточно сделать только один раз.

unnamed

Чтобы понять, что все работает правильно, достаточно посмотреть на вкладку LOGS. Если ошибки есть, в этой вкладке окажется уведомление о них с указанием на конкретные строки в скрипте.

pasted image 0

Вот мы и разобрали основные понятия в скриптах, посмотрели на частые ошибки и варианты их решения. Теперь можем попрактиковаться!

Последний пункт в нашей программе, своего рода вишенка на тортике — это чтение и разбор скрипта.

Пример скрипта с пояснением

Давайте возьмем несколько участков кода и разберем их!

  1. Код:
image14

В этом участке кода происходит выборка сущности «кампания» с определенными селекторами (фильтрами). Конкретно нам нужны те, которые содержат метку p.c.c.a и только включенные кампании. Селекторы кампании работают по принципу «И» (И это И это И это).

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

  1. Код:
image17

Здесь же используется цикл с итератором next(). Он позволяет вам отработать каждую кампанию, которая была получена выше. Например мы получили 10 кампаний, соответственно у нас будет 10 итераций (повторов) цикла. И в каждом цикле мы будет работать только с одной кампанией.

Как же работает этот цикл?

В переменной campaigns содержится список кампаний (у нас — 10 штук). Далее запускается процесс, именуемый циклом, и в каждую итерацию (один проход) мы работаем только с одной кампанией из списка. Над каждой кампанией выполняется набор команд (операций, действий) внутри этого цикла. Для каждой кампании мы ищем метки с определенным названием, формируем bidBorder (границу ставки) и производим или понижение, или повышение ставки. Вот и все.

А вот пример работы с ключевыми словами:

image16

Здесь мы выбираем ключевые слова с целым набором нужных нам характеристик и фильтром по времени (forDateRange). В примере — за вчерашний день. Так это и работает.

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

Happy campaigning 🐧

Есть вопрос? Хотите разобраться еще в каких-то терминах? Не можете установить скрипт? Пишите нам в комментарии ↓ и разберемся вместе!


Гайд писали:

Александр Михайленко — php backend developer

Николай Скоропадский — шеф и предводитель всея Пингвинов

Получить 7 писем о том,
как улучшить свой AdWords аккаунт
+ PPC статьи

Имя
e-mail
Улучшить AdWords

Улучшить свой AdWords

Получите 7 писем, о том, как можно улучшить свой аккаунт в AdWords

Подписаться

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

В версии 2.2.0

  • Добавлена поддержка "Google Keyword Planner"
  • Используйте "LeftALT + S" для поиска слов
  • "Показать/скрыть" теперь полностью скрывает расширение с экрана

Основные комбинации

  • LeftMouseClick для добавления слова, повторное нажатие - для удаления
  • LeftALT + LeftMouseClick - для сбора фраз
  • LeftALT + S - для поиска слов