Last active
August 29, 2015 14:14
-
-
Save Dmitry-Klymenko/db21c2f14b4ca17c4286 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Давайте определим константы | |
var END_DATE = new Date('December 21, 2015'); //день окончания акции | |
var AD_GROUP_NAME = 'On Sale'; //имя группы объявлений (Ad Group) в адвордс | |
/* | |
Функция main() отправная точка скрипта. С нее начинается выполнение скрипта. Нет, она не принимает параметры: argv и argc | |
*/ | |
function main() { | |
//эта функция возвращает ассоциативный массив с количеством часов и минут до окончания распродажи | |
var timeLeft = calculateTimeLeftUntil(END_DATE); | |
var adGroup = getAdGroup(AD_GROUP_NAME); //выбираем из адвордса нужную группу объявлений | |
var keywords = adGroup.keywords().get(); //получаем список всех ключевых слов - их не может быть больше 50 тыс | |
while (keywords.hasNext()) { //перебираем все ключевые слова | |
var keyword = keywords.next(); | |
// Обновляем параметр {param1} равным рассчитанным оставшимся количеством дней and {param2} часов | |
keyword.setAdParam(1, timeLeft['days']); | |
keyword.setAdParam(2, timeLeft['hours']); | |
} | |
} | |
function calculateTimeLeftUntil(end) { | |
//it's 24 * 60 * 60 * 1000 - количество миллисекунд в дне | |
var DAY_IN_MILLISECONDS = 86400000; | |
var current = new Date(); //текущая дата и время | |
var timeLeft = {}; //returning object | |
var daysFloat = (end - current) / DAY_IN_MILLISECONDS; //математически выраженное дробным числовм количество оставшихся дней | |
timeLeft['days'] = Math.floor(daysFloat); | |
timeLeft['hours'] = Math.floor(24 * (daysFloat - timeLeft['days'])); | |
// Количество дней и часов может быть отрицательным, если скрипт будет запущен _после_ окончания акции | |
if (timeLeft['days'] < 0) timeLeft['days'] = 0; | |
if (timeLeft['hours'] < 0) timeLeft['hours'] = 0; | |
return timeLeft; | |
} | |
function getAdGroup(name) { | |
var adGroupIterator = AdWordsApp.adGroups() //получаем все группы объявлений | |
.withCondition('Name = "' + name + '"') //отфильтровываем только ту что имеет нужное нам имя | |
.withLimit(1) //берем первую (и единственную) | |
.get(); //выбираем группу объявлений | |
if (adGroupIterator.hasNext()) | |
return adGroupIterator.next(); //возвращаем объект для работы с выбранной группой объявлений | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment