Как посчитать показатель качества в Google AdWords для всего аккаунта

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

Можно это делать вручную. Выгружаете все ключи аккаунта и шаманите с сводными таблицами в excel. Но, по мне, это боль и страдания. К тому же, каждый раз нужно куда-то этот средний показатель качества записывать и сохранять, чтобы отслеживать динамику изменений. Ведь хочется знать, «куда катится» аккаунт.

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

Зачем это нужно?

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

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

Вот так выглядит результат работы скрипта

Как это сделать

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

1. Создайте таблицу в Google Sheets и дайте доступ для редактирования по ссылке.

ul5zMWQ

2. Добавить ссылку в скрипт вместо текста {сюда вписать адрес google таблицы}

3. Присвойте ярлык»qs-weighted» аккаунтам, по которым вы ходите собирать взвешенный показатель качества.

4. Добавьте скрипт в MCC и настройте на запуск каждую неделю

А вот и сам скрипт

И да, большое спасибо автору «базового» скрипта, Владимиру, на основе которого делался этот.

/**********************************************************
* Вставьте URL таблиц Google для экспорта данных (раздайте доступ для редактирования по ссылке)
**********************************************************/
var spreadSheetUrl = '{сюда вписать адрес google таблицы}';
/**********************************************************
* Присвойте ярлык аккаунтам, для которых нужно настроить экспорт (макс. количество аккаунтов за итерацию - 50 шт.)
* Вставьте название вашего ярлыка
**********************************************************/
var labelName = 'qs-weighted'

/**********************************************************
* За сколько дней считать взвешенный QS
**********************************************************/
var days = 7;
/**********************************************************
* Сохраняем и настраиваем автоматический запуск каждую неделю
**********************************************************/
function main() {
  MccApp.accountLabels().withCondition("Name = '"+labelName+"'").get().next().accounts().executeInParallel('trackQS');
}
//Функция, которая отвечает за экспорт данных из AdWords
function trackQS(){
  //Подключаемся к таблице Google
  var period = 'LAST_' + days + '_DAYS';
  var spreadsheet = SpreadsheetApp.openByUrl(spreadSheetUrl);
  //Генерируем отчет по QS
  var report = AdWordsApp.report(
    //выбираем метрики-параметры для экспорта
    'SELECT KeywordMatchType, AdGroupName, CampaignName, QualityScore, Date, Week, Month, Year , AverageCpc, AveragePosition, Clicks, Cost, CpcBid, Ctr, FirstPageCpc, Impressions, SearchRankLostImpressionShare, SearchImpressionShare, TopOfPageCpc ' +
    //выбираем тип отчета: https://developers.google.com/adwords/scripts/docs/features/reports
    'FROM   KEYWORDS_PERFORMANCE_REPORT ' +
    //фильтруем данные - собираем статистику только для активных ключевых слов
    'WHERE Status = ENABLED '+
    'AND IsNegative = FALSE ' +
    'AND QualityScore > 0 ' +
    'AND AdGroupStatus = ENABLED ' +
    'AND CampaignStatus = ENABLED ' +
    //собираем данные за определенный период
    'DURING ' + period);
  //экспортируем отчет в таблицу Google
  var sheet = spreadsheet.getSheetByName(AdWordsApp.currentAccount().getName()) || prepareSheet(spreadsheet,AdWordsApp.currentAccount().getName());
  var rows = report.rows();
  var rowsValues = [];
  var qsSum = 0;
  var impressionsSum = 0;
  var name = AdWordsApp.currentAccount().getName()
  
  Logger.log(name+" - started collecting");

  while (rows.hasNext()) {
    var row = rows.next();
    qsSum = qsSum + row.QualityScore * parseInt(row.Impressions);
    impressionsSum = impressionsSum + parseInt(row.Impressions);
  }
  
  var averegeQS = qsSum / impressionsSum;
  var currentDate = getFormattedDate();
  
  Logger.log(name+" - finished collecting");

  rowsValues.push([currentDate, averegeQS]);
  
  var range = sheet.getRange(sheet.getLastRow()+1,1,rowsValues.length,rowsValues[0].length);
  range.setValues(rowsValues);
  Logger.log(name+" - export finished");
  return "Export Finished";
}
//Создаем лист с названиями колонок в певой строке
function prepareSheet(spreadsheet,name){
  var sheet = spreadsheet.insertSheet(name);
  sheet.appendRow(["Date", "Weighted QS"]);
  return sheet;
}


function getFormattedDate() {
  var d = new Date();
  var curr_date = d.getDate();
  var curr_month = d.getMonth() + 1;
  var curr_year = d.getFullYear();
  return curr_date + "." + curr_month+ "." + curr_year;
}

В общем, пользуйтесь!

Алексей Ярошенко

Интернет-маркетолог. Сертифицированный специалист по Google AdWords, Google Analytics и Яндекс.Директ. Сертифицированный тренер Google в Беларуси.