Advertisement
Guest User

Untitled

a guest
May 24th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 KB | None | 0 0
  1. ////////Начало
  2. // Желаемое значение процента полученных показов от 0 до 1
  3. var TARGET_IMPRESSION_SHARE = 0.95;
  4.  
  5. // Множитель ставки
  6. var BID_ADJUSTMENT_COEFFICIENT = 1.25;
  7.  
  8. // Верхний порог ставки
  9. var max = 40;
  10.  
  11. // Ставка для фраз без показов
  12. var noImp = 30;
  13.  
  14. // Нижний порог ставки
  15. var min = 15;
  16.  
  17. // Условие отбора фраз, например "имя кампании содержит"
  18. var cond = "CampaignName CONTAINS 'brand'";
  19.  
  20. // Период для отбора
  21. var period = 'LAST_14_DAYS';
  22.  
  23. // Основная функция, без нее никуда
  24. function main() {
  25. // Ф-я подъема ставок
  26. raiseKeywordBids();
  27. // Ф-я снижения ставок
  28. lowerKeywordBids();
  29. // Ф-я установки ставок для фраз с нулем показов
  30. noImpressionsKeywordBids();
  31. }
  32.  
  33. // Ф-я подъема ставок
  34. function raiseKeywordBids() {
  35. Logger.log("Повышаем");
  36. var keywordsToRaise = getKeywordsToRaise();
  37. while (keywordsToRaise.hasNext()) {
  38. var keyword = keywordsToRaise.next();
  39. keyword.bidding().setCpc(getIncreasedCpc(keyword.bidding().getCpc()));
  40. Logger.log(keyword.getText()+" - "+keyword.getCampaign().getName());
  41. }
  42. }
  43.  
  44. // Ф-я снижения ставок
  45. function lowerKeywordBids() {
  46. Logger.log("Понижаем");
  47. var keywordsToLower = getKeywordsToLower();
  48. while (keywordsToLower.hasNext()) {
  49. var keyword = keywordsToLower.next();
  50. keyword.bidding().setCpc(getDecreasedCpc(keyword.bidding().getCpc()));
  51. Logger.log(keyword.getText()+" - "+keyword.getCampaign().getName());
  52. }
  53. }
  54.  
  55. // Ф-я установки ставок для фраз с нулем показов
  56. function noImpressionsKeywordBids() {
  57. Logger.log("Ставим фиксированную ставку");
  58. var keywordsToLower = getKeywordsNoImpressions();
  59. while (keywordsToLower.hasNext()) {
  60. var keyword = keywordsToLower.next();
  61. keyword.bidding().setCpc(noImp);
  62. Logger.log(keyword.getText()+" - "+keyword.getCampaign().getName());
  63. }
  64. }
  65.  
  66. // Ф-я повышения ставки
  67. function getIncreasedCpc(cpc) {
  68. var bid = cpc * BID_ADJUSTMENT_COEFFICIENT; if (bid>max) {bid=max;} else if (bid<min) {bid=min;}
  69. return bid;
  70. }
  71.  
  72. // Ф-я снижения ставки
  73. function getDecreasedCpc(cpc) {
  74. var bid = cpc / BID_ADJUSTMENT_COEFFICIENT; if (bid<min) {bid=min;} else if (bid>max) {bid=max;}
  75. return bid;
  76. }
  77.  
  78. // Ф-я получения ключевых слов, которым надо поднять ставку
  79. function getKeywordsToRaise() {
  80. return AdWordsApp.keywords().withCondition(cond)
  81. .withCondition("Impressions > 0")
  82. .withCondition('Status = ENABLED')
  83. .withCondition('SearchImpressionShare < ' + TARGET_IMPRESSION_SHARE)
  84. .orderBy('SearchImpressionShare ASC')
  85. .forDateRange(period)
  86. .get();
  87. }
  88.  
  89. // Ф-я получения ключевых слов, которым надо опустить ставку
  90. function getKeywordsToLower() {
  91. return AdWordsApp.keywords().withCondition(cond)
  92. .withCondition("Impressions > 0")
  93. .withCondition('SearchImpressionShare > ' + TARGET_IMPRESSION_SHARE)
  94. .withCondition('Status = ENABLED')
  95. .orderBy('SearchImpressionShare DESC')
  96. .forDateRange(period)
  97. .get();
  98. }
  99.  
  100.  
  101. // Ф-я получения ключевых слов, у которых не было показов
  102. function getKeywordsNoImpressions() {
  103. return AdWordsApp.keywords().withCondition(cond)
  104. .withCondition("Impressions = 0")
  105. .withCondition('Status = ENABLED')
  106. .forDateRange(period)
  107. .get();
  108. }
  109. ///////Конец
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement