AdWords
Сейчас в сети: 807
Сейчас в сети: 807
Советы и вопросы по использованию скриптов AdWords
Подсказки
star_border
Ответить

Скрипт для фильтрации пустых групп объявлений

Ведущий участник

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

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

Скрипт не Must-have, но периодически бывает полезен, поэтому решил вынести его в данный раздел...

1 Ответ экспертаverified_user

Re: Скрипт для фильтрации пустых групп объявлений

Ведущий участник
function main() {
  var adgroupIter = AdWordsApp.adGroups()
    .withCondition('CampaignStatus = ENABLED')
    .withCondition('Status = ENABLED')
    .get();
  var labelNameForAds = 'without ads'; //предварительно необходимо создать ярлык в аккаунте с именем 'without ads'
  var emptyAdgroupIter = 0;
  while(adgroupIter.hasNext()) {
    var adgroup = adgroupIter.next();
    var adIter = adgroup.ads()
    .withCondition("Status = ENABLED")
    .get();
    var hasAds = adIter.hasNext();
    if(!hasAds) {
        adgroup.applyLabel(labelNameForAds);
        emptyAdgroupIter++;
    }
  }
  if(emptyAdgroupIter==0){
    Logger.log('All right');
    }else{
    Logger.log(emptyAdgroupIter);
  }
}

Скрипт для фильтрации пустых групп объявлений

Аспирант ✭

Хороший скрипт. Можно ускорить работу через отчеты API, как делают Brainlabs.

Скрипт для фильтрации пустых групп объявлений

Ведущий участник

@Dmytro Tonkikh, спасибо. Можете подробнее про отчеты API?

Re: Скрипт для фильтрации пустых групп объявлений

Аспирант ✭

@Alex Yamp

Используется AdWordsApp.report()

Выгружается два отчета по группам и объявления.

Далее идет сравнение: если, группы нет в отчете по объявлениям, значит она пустая.

Такой скрипт работает несколько секунд в маленьком акке.

 

 

В большом аккаунте просмотр занимает 1:13.

 

Снимок111.JPG

Скрипт для фильтрации пустых групп объявлений

Ведущий участник

Отлично, спасибо. Возьму на заметку.

Скрипт для фильтрации пустых групп объявлений

Студент ✭ ✭

Здравствуйте)

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

Что бы так же ярлыком помечался!

Большое спасибо! 

Re: Скрипт для фильтрации пустых групп объявлений

Ведущий участник

Добрый день.
Пожалуйста:

function main() {
  var adgroupIter = AdWordsApp.adGroups()
    .withCondition('CampaignStatus = ENABLED')
.withCondition("AdvertisingChannelType = SEARCH") .withCondition('Status = ENABLED') .get(); var labelNameForKeywords = 'without keywords'; //предварительно необходимо создать ярлык в аккаунте с именем 'without keywords' var emptyAdgroupIter = 0; while(adgroupIter.hasNext()) { var adgroup = adgroupIter.next(); var keywordIter = adgroup.keywords() .withCondition("Status = ENABLED") .get(); var hasAds = keywordIter.hasNext(); if(!hasAds) { adgroup.applyLabel(labelNameForKeywords); emptyAdgroupIter++; } } if(emptyAdgroupIter==0){ Logger.log('All right'); }else{ Logger.log(emptyAdgroupIter); } }

Re: Скрипт для фильтрации пустых групп объявлений

Аспирант ✭

Ускоренный скрипт для поиска пустых групп или без расширенных объявлений.

 

function main () {
  var spreadsheet = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/'); //Ссылка на Google Spreadsheet
  var sheet = spreadsheet.getActiveSheet();
  sheet.clear();
  
  var numberOfEntities = {};
  
  var query = 'SELECT AdGroupName, AdType, AdGroupStatus, CampaignName ' +
      'FROM AD_PERFORMANCE_REPORT ' +
      'WHERE CampaignName CONTAINS "Имя" ' +
      'AND CampaignStatus = ENABLED ' +
      'AND AdGroupStatus IN [ENABLED, PAUSED] ' +
      'DURING THIS_MONTH';

  
  var report = AdWordsApp.report(query);
  var rows = report.rows();
  
  while (rows.hasNext()) {
    var row = rows.next();
    var adGroup = row["AdGroupName"];
    var AdType = row["AdType"].replace(/\s/g,"");
    var AdGroupStatus = row["AdGroupStatus"];
    var CampaignName = row["CampaignName"];
    var id = CampaignName+adGroup;
    
    //Logger.log(AdType);
   
    if (numberOfEntities[id] == undefined) {
      numberOfEntities[id] = {"Textad":0,
                              "Expandedtextad":0,
                              "AdGroupName":adGroup,
                              "AdGroupStatus":AdGroupStatus,
                              "CampaignName":CampaignName
                             };
      
      if (AdType == "Textad") {
        numberOfEntities[id]["Textad"] = 1;
      
      };
      
      if (AdType == "Expandedtextad") {
        numberOfEntities[id]["Expandedtextad"] = 1;
      };

    } else {
      if (AdType == "Textad") {
      numberOfEntities[id].Textad++; 
       //Logger.log(adGroup + " " + numberOfEntities[adGroup].Textad);
      } else {
      numberOfEntities[id].Expandedtextad++;
        //Logger.log(adGroup + " " + numberOfEntities[adGroup].Expandedtextad)
      }
    }
  }
  //Logger.log(numberOfEntities);
  
  var adGroupQuery = 'SELECT CampaignName, AdGroupName, AdGroupStatus  ' +
      'FROM ADGROUP_PERFORMANCE_REPORT ' +
      'WHERE CampaignName CONTAINS "Имя" ' +
      'AND CampaignStatus = ENABLED ' +
      'AND AdGroupStatus IN [ENABLED, PAUSED] ' +
      'DURING THIS_MONTH';
  
  var adGroupReport = AdWordsApp.report(adGroupQuery);
  var adGroupRows = adGroupReport.rows();
  
  while (adGroupRows.hasNext()) {
    var row = adGroupRows.next();
    var adGroup = row["AdGroupName"];
    var AdGroupStatus = row["AdGroupStatus"];
    var CampaignName = row["CampaignName"];
    var id = CampaignName+adGroup;
    
    if (numberOfEntities[id] == undefined) {
      numberOfEntities[id] = {"Textad":0,
                              "Expandedtextad":0,
                              "AdGroupName":adGroup,
                              "AdGroupStatus":AdGroupStatus,
                              "CampaignName":CampaignName
                             };
      
    } else {
     continue;
    };
  
  }

  var arr = [["Campaign Name","AdGroup","AdGroup Status","Text ad","Expanded text ad"]];
  for (var key in numberOfEntities) {
    arr.push([numberOfEntities[key]["CampaignName"],numberOfEntities[key]["AdGroupName"],numberOfEntities[key]["AdGroupStatus"],numberOfEntities[key]["Textad"],numberOfEntities[key]["Expandedtextad"]]);
  }

  sheet.getRange(1, 1, arr.length, arr[0].length).setValues(arr);
}

Скрипт для фильтрации пустых групп объявлений

Студент ✭ ✭

Добрый день.
А есть похожий скрипт, который бы приостанавливал Группу объявлений, если в ней нет включенных ключевых слов?