Ставки для позиции

Материал из Raskrutka
Перейти к: навигация, поиск

1. Скопируйте приведенный ниже код в Массовые операции

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

3. Указать максимальную и минимальную ставки, наибольшее и наименьшее значение позиции

4. Запланировать выполнение скрипта


function main() {
  //массив ярлыков. 
  //если один, то просто "Ярлык1".
  //если массив, то ["Ярлык1","Ярлык2",...,"ЯрлыкN"]  
  var LabelNames = ["НАЗВАНИЕ ЯРЛЫКА"];
  //максимально допустимая цена за клик
  var maxPrice = 0.5;
  //минимально допустимая цена
  var minPrice = 0.2;
  //нижняя граница базового диапазна AveragePosition
  var customLowerAveragePosition = 1;
  //верхняя граница базовго диапазона AveragePosition
  var customUpperAveragePosition = 1;
  //проценты для базового диапазона
  var customPercent = 0;  
  //(%) шаг для процентов других диапазонов
  var stepPercent = 5;
  //наименьшее возможное значение AveragePosition
  var minAveragePosition = 1;
  //наибольшее возможное значение AveragePosition
  var maxAveragePosition = 9;
  //diapason
  var diapason = 0.5;
  
  
  var tempPercent = customPercent;
  var down_max = customLowerAveragePosition;
  var down_min = down_max - diapason;
  
  var up_min = customUpperAveragePosition;
  var up_max = up_min + diapason;
  
  var to_up = maxAveragePosition - customUpperAveragePosition;
  
  var labelName = "";
  if(LabelNames.constructor === Array){
    labelName = "LabelNames CONTAINS_ANY ['" + LabelNames.join("','") + "']";
  }else{
    labelName = "LabelNames = '" + LabelNames + "'";
  }
  Logger.log("Condition for labels: " + labelName);
  
  var selectedKeyword = 0;
  while(down_max > minAveragePosition){
    Logger.log("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
    tempPercent = tempPercent - stepPercent;
    var keywordIterator = AdWordsApp.keywords()
    .withCondition(labelName)
    .withCondition("AveragePosition < " + Number(down_max) + " AND AveragePosition > " + Number(down_min - 0.01))
    .withCondition("Impressions > 0")
    .forDateRange("LAST_7_DAYS")
    .get();
    Logger.log(" AveragePosition < " + Number(down_max) + " AND AveragePosition > " + Number(down_min - 0.01));
    while(keywordIterator.hasNext()){
      selectedKeyword = selectedKeyword + 1;
      Logger.log("   ---------------");
      var keyword = keywordIterator.next();
      Logger.log("   " + selectedKeyword + "   ----------- keyword: " + keyword.getText());
      Logger.log("   old price " + keyword.getMaxCpc());
       var tempPrice = keyword.getMaxCpc() + (keyword.getMaxCpc() * tempPercent)/100;
       if (tempPrice > maxPrice) {
         keyword.setMaxCpc(maxPrice);
       }else if (tempPrice < minPrice){
         keyword.setMaxCpc(minPrice);
       }else{
         keyword.setMaxCpc(tempPrice);
       }
       Logger.log("   new price " + keyword.getMaxCpc());
       Logger.log("   add percent " + tempPercent);
     }
    down_max = down_min - 0.01;
    down_min = down_max - diapason;
  }
  
  tempPercent = customPercent;
  
  while(up_min < maxAveragePosition){
    Logger.log("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
    tempPercent = tempPercent + stepPercent;
    var keywordIterator = AdWordsApp.keywords()
    .withCondition(labelName)
    .withCondition("AveragePosition < " + Number(up_max) + " AND AveragePosition > " + Number(up_min-0.01))
    .withCondition("Impressions > 0")
    .forDateRange("LAST_7_DAYS")
    .get();
    Logger.log(" AveragePosition < " + Number(up_max) + " AND AveragePosition > " + Number(up_min-0.01));
     while (keywordIterator.hasNext()){
       selectedKeyword = selectedKeyword + 1;
       Logger.log("   ---------------");
       var keyword = keywordIterator.next();
       Logger.log("   " + selectedKeyword + "   ------------------keyword " + keyword.getText());
       Logger.log("   old price " + keyword.getMaxCpc());
       var tempPrice = keyword.getMaxCpc() + (keyword.getMaxCpc() * tempPercent)/100;
       if (tempPrice > maxPrice) {
         keyword.setMaxCpc(maxPrice);
       }else if (tempPrice < minPrice){
         keyword.setMaxCpc(minPrice);
       }else{
         keyword.setMaxCpc(tempPrice);
       }
       Logger.log("   new price " + keyword.getMaxCpc());
       Logger.log("   add percent " + tempPercent);
     }
    
    up_min = up_max;
    up_max = up_max + diapason;
  }
  
  
}