Skip to content

Instantly share code, notes, and snippets.

@Dmitry-Klymenko
Last active August 29, 2015 14:14
Show Gist options
  • Save Dmitry-Klymenko/db21c2f14b4ca17c4286 to your computer and use it in GitHub Desktop.
Save Dmitry-Klymenko/db21c2f14b4ca17c4286 to your computer and use it in GitHub Desktop.
// Давайте определим константы
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