Новости

Нетривиальный способ управления ставками в AdWords

Автор Дата 03.05.2017

Разберем трудный, но интересный способ управления ставками в AdWords. Помогут нам в этом Analytics, Google Таблицы и скрипты AdWords. В качестве подопытного выступит торговая деятельность в тематике «Товары для женщин» с таргетингом возьми всю Россию.

Однажды мы захотели назначать ставки в AdWords, невыгодный прибегая к сторонним оптимизаторам. Поставили задачу написать скрипт, какой-нибудь будет сам рассчитывать ставку на основе ДРР, стоимости конверсии, числа транзакций и что-что-нибудь еще. Вроде все логично, но подобно ((тому) как) занести в скрипты AdWords данные о доходах? Легко! В общем, коллективно с агентством Digital Strategy, тренируясь на общем клиенте, наш брат это сделали.

Когда-то давно в одном изо ресурсов Google Analytics были настроены вычисляемые цифры:


– и созданы отчеты по эффективности платного трафика.


Сегодня надо экспортировать нужные данные из Google Analytics в AdWords. Приблизительно как API AdWords мы не используем, включили промежуточное устройство в виде Google Таблиц.

Создаем пустую таблицу и устанавливаем приписка Google Analytics из библиотеки дополнений.


Это наращивание позволит создавать любые отчеты в Google Таблицах получи основе данных Analytics.

Мы создали отчет с нужными нам данными:


– и настроили ежедневное корректировка.


Теперь на одной из вкладок этой таблицы у нас кто (всё будет актуальная интересующая нас информация за последние 30 дней.


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

=report!A16


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

На следующем шаге ты да я создаем свои вычисляемые показатели на основе имеющихся данных.


В столбце I автор этих строк приводим СРО к виду целого числа, с помощью формулы

=ЛЕВСИМВ(G1;Обнаружить(".";G1)-1)

В столбце J рассчитываем ставка для эдвордс

=ЕСЛИОШИБКА(((5/H1)-4*H1);(5/D1)*50)

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

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

Открываем вычитчик скриптов и вставляем этот код:

function main() {

// входные границы

var SPREADSHEET_URL = ‘https://docs.google.com/spreadsheets/……………….’; // указываем url таблицы

var sheet_name = ‘Форзац1’; // указываем имя нужной вкладки, где рассчитывается расчет

var file = SpreadsheetApp.openByUrl(SPREADSHEET_URL); // открываем обложка

var sheet = file.getSheetByName(sheet_name); // получаем нахзац

var lastColumnName = ‘J’; // последний столбец

//var setBid = 18; // пароли для фраз без кликов

var dateRange = ‘LAST_30_DAYS’;

Logger.log(‘Супинатор ‘+sheet.getName()+’ со ставками получена.’); // выводим фирма листа

function getRange(){

// получаем количество строк

var sheet_name = ‘report’; // указываем кличка вкладки c отчетом

var file = SpreadsheetApp.openByUrl(SPREADSHEET_URL); // открываем обложка

var sheet = file.getSheetByName(sheet_name); // получаем аллонж

Logger.log(‘Вкладка ‘+sheet.getName()+’ с отчетом получена.’);

var lastRow = sheet.getLastRow(); //получаем последнюю строку

var lastColumn = sheet.getLastColumn(); //получаем крайний столбце

var lastCell = sheet.getRange(lastRow, lastColumn).getA1Notation() //номенклатура последней ячейки

var numRows = Number(lastCell.slice(1))-15; //считаем величина и круг непустых строк, исключая шапку отчета

Logger.log(‘В отчете ‘+numRows+’ строк с данными’);

return numRows;

}

function getCampaignNames2(){

// получаем (кладовая с кампаниями и индексами

// перебираем столбец кампаний и запоминаем с какой-либо строчки по какую идут данные по праздник или иной РК

var campaignNames = []; //создаем бессодержательный массив имен кампаний

var indexCampaignNames = []; //создаем незанятый массив номеров строчек

var last = getRange();

var name = »;

var j = 1;

for (var i = 1; i <= last; i++){ //в сие цикле наполняем созданные массивы

var r = ‘A’+String(i);

name = sheet.getRange(r).getValue();

if (name == campaignNames[campaignNames.length-1]) {j++;}

else {campaignNames.push(name); indexCampaignNames.push(j); j++;}

}

Logger.log(‘Оглавление кампаний: ‘+campaignNames); Logger.log(‘Список индексов: ‘+indexCampaignNames);

var dict = []; // создаем вокабулярий кампаний и индексов и заполняем его

dict.campaigns = campaignNames;

indexCampaignNames.push(last+1);

dict.index = indexCampaignNames;

return dict;

}

function dictionary(a,z){

// получаем азбуковник из массивов ключевых слов и ставок

var dict = {};

var keywords = [];

var bids = [];

var c = ‘A’+String(a);

dict.campaign = sheet.getRange(c).getValue();

while ( a < z) { Logger.log(‘Конструкция с индексом ‘+a+’ учтена. Идём до ‘+z);

var k = ‘C’+String(a);

keywords.push(sheet.getRange(k).getValue());

var b = lastColumnName+String(a);

bids.push(sheet.getRange(b).getValue()); a++;

}

dict.keywords = keywords;

dict.bids = bids;

Logger.log(‘Получен лексика ‘+dict.keywords+’ ‘+dict.bids);

return dict;

}

function bids(){

// назначаем ставки

var dictcai = getCampaignNames2();

for (var i = 0; i < dictcai.campaigns.length; i++) {

var dict = dictionary(dictcai.index[i],dictcai.index[i+1]);

//перебираем скопление кампаний и для каждой РК выбираем продуктовые группы вслед за последние 30 дней,

// где было более 0 кликов

var adGroupIterator = AdWordsApp.productGroups()

.withCondition(‘CampaignName = "’+dict.campaign+’"’)

.withCondition(‘Clicks > 0’)

.forDateRange(dateRange)

.get(); Logger.log(‘Война ‘+dict.campaign);

// перебираем продуктовые группы

while(adGroupIterator.hasNext()){

var adGroup = adGroupIterator.next();

//находим в массиве ключевых слов (продуктовых групп), полученных с гугл-таблицы,

// соответствия в списке продуктовых групп, полученных в отданный момент после перебора РК

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

var index = dict.keywords.indexOf(adGroup.getValue());

var bid = dict.bids[index];

try { // пытаемся предуготовлять те ставки, что есть в массиве, используя около этом ограничения.

if (bid<=2){bid=2;}

if (bid>=20){bid=20;}

if (bid==undefined) {bid=2;}

adGroup.setMaxCpc(bid.toFixed(2)); Logger.log(adGroup.getValueКогдаdict.bids[index]);

}

// если какие-то проблему возникнут держи нашем пути, то в консоли можно будет уловить ошибку,

// а ставка будет установлена в размере 10 руб.

catch(e){adGroup.setMaxCpc(10); Logger.log(adGroup.getValueУвыdict.bids[index]); Logger.log(e);}

}

}

}

function bids2(){

// назначаем ставки про фраз без кликов

var dictcai = getCampaignNames2();

for (var i = 0; i < dictcai.campaigns.length; i++) {

var dict = dictionary(dictcai.index[i],dictcai.index[i+1]);

var campaignName = dict.campaign;

var adGroupName = ‘Ad Group #1’; // в нашей рк только 1 группа, поэтому такое условие

var adGroupIterator = AdWordsApp.productGroups()

.withCondition("CampaignName = ‘" + campaignName +

"’ and AdGroupName = ‘" + adGroupName + "’")

.withCondition(‘Clicks < 1’)

.forDateRange(dateRange)

.get(); Logger.log(‘Война ‘+dict.campaign);

while(adGroupIterator.hasNext()){

var adGroup = adGroupIterator.next();

var bid = 18;

adGroup.setMaxCpc(bid); Logger.log(adGroup.getValueНапротивbid);

}

}

}

bids(); // запускаем скрипт

bids2(); // запускаем скрипт

Logger.log(‘Скрипт выполнен!’);

}

Около такие сообщения будут в консоли:



Как нам безлюдный (=малолюдный) хотелось сделать универсальный скрипт для всех типов кампаний, сего не вышло. Получился вариант для торговых кампаний с одной группой, с множеством групп, к поисковых кампаний и для КМС. Данный скрипт рассчитан бери торговые кампании с одной группой. Если внимательно переработать его, то станет понятна логика работы:

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

2. проходимся по столбцам пруд и ключевых слов (продуктовых групп) и также формируем двушничек списка;

3. создаем словари, в которых становится понятно, какие продуктовые группы и ставки принадлежат конкретным кампаниям;

4. перебираем продуктовые группы аккаунта AdWords бери основе условий из списка кампаний, выбираем продуктовые группы с 1 и больше кликами;

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

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

Самое опора, что данный метод работы с таблицами и скриптами позволит добавлять любые доступные изменения в аккаунт на основе любых данных, доступных к импорта в Google Таблицы. Остается только пробовать и вводить.

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

Долгое время ставки назначались руками, с 9 февраля их стал предуготовлять скрипт.


Теперь давайте сравнивать разные показатели вслед 2 периода: 13 февраля – 2 апреля и 14 декабря – 5 февраля. 7 полных недель, и вслед за тем, и там было немало праздничных дней, но возьми работе кампании это особо не сказывалось.


Труд очень радует. Хотя в начале марта и был махина простой кампании, ДРР снизился на 77%, СРО снизился получай 75%, доход и число транзакций выросли в разы. Присутствие том, что расходы на эту кампанию увеличились лишь на 15 тыс. (мы увеличили бюджет по прошествии времени первых снижений ДРР).

Также можем сравнить оставшиеся периоды, исключающие совсем праздничные дни и простои, да также до и после 9 февраля: 13 марта – 2 апреля и 16 января – 5 февраля, после 3 полных недели.


Также заметно снижение ДРР и СРО, подъём дохода и числа транзакций.

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

Вам можете с помощью скриптов Google парсить любые сайты (сие очень просто, вот немного об этом) и вносить в Google Таблицы данные о пробках, погоде, ТВ-программе, ценах. Ладиться ставки с помощью формул и далее с помощью скриптов размещать нужные ставки в кампаниях.

Если у вас возникли невзгоды со скриптами, то подтяните свои знания JS и AdWords Scripts. Разве не получается настроить фильтр в отчете Google Таблицы, так изучите этот материал.

Источник: www.seonews.ru