Контролируем остатки на Adwords для большого количества кампаний
Если у вас несколько кампаний в Google AdWords, то может возникнуть проблемы, с контролем остатков на балансе, стандартные уведомления AdWords достаточно кривые и можно пропустить момент, когда нужно заводить деньги.

Но используя скрипты AdWords и интеграцию с Google Spreadsheet эту проблему можно упростить.

И так, алгоритм будет следующий:

1. Делаем Google Таблицу с данными о кампаниях.

2. Устанавливаем скрипт, который берет все расходы на аккаунте за весь период, считает средний расход за последние 7 дней и передает всё это дело в Google Таблицу.

3. Настраиваем скрипт под конкретную кампанию, устанавливаем периодичность работы скрипта.

4. Получаем удовольствие.
Google Таблица с данными о кампании
Таблица имеет общую вкладку, куда импортируются показатели по всем кампаниям:
Общая вкладка таблицы (нажмите для увеличения)
И вкладки клиентов (кампаний AdWords):
Вкладка клиента (нажмите для увеличения)
Ячейки выделенные красным и серым, заполняются автоматически скриптом или формулами (которые не забываем протягивать), желтые ячейки вы заполняете самостоятельно. Т.е. пришла оплата, ставим дату и сумму оплаты, после заведения на аккаунт, также фиксируем и раз в месяц обновляем корректировки.

При заведении нового клиента, создаете новый лист и копируйте данные их предыдущего листа, чистите все жёлтые ячейки и прописывайте их заново.

И в общем листе, по аналогии, делаем новую строчку.

Чтобы начать работу, берем этот документ и сохраняем себе в аккаунт.
Устанавливаем скрипт
Заходим в аккаунт и выбираем пункт «Операции над несколькими элементами»:
Операции над несколькими элементами
Где выбираем раздел «Скрипты»:
Скрипты
После чего, создаем новый скрипт:
Создаем новый скрипт
Далее, пишем название скрипта, например «контроль оплат», нажимаем на «Авторизация» и авторизируемся, после чего, добавляем скрипт:
function main() {
  var campaignIterator = AdWordsApp.campaigns()
      .forDateRange('ALL_TIME')  
      .get();
  var campaignIterator2 = AdWordsApp.campaigns()
      .forDateRange('LAST_7_DAYS') 
      .withCondition("Status = ENABLED")
      .get();
  var ss = SpreadsheetApp.openByUrl(
    "https://docs.google.com/spreadsheet/ccc?key=0AmlDmpbBj8rLdFJBSi1ZdklHbTVsRGt3Wm9VUG9jUmc#gid=0");//Ссылка на свою таблицу
  ss.setActiveSheet(ss.getSheets()[15]); //активируем лист
  var allCost = 0;
  var allBudget = 0;
//  Logger.log(' E2: ' + ss.getRange("E2").getValue());
  //Получаем общий расход за всё время
  while (campaignIterator.hasNext()) {
    var campaign = campaignIterator.next();
    var stats = campaign.getStatsFor("ALL_TIME")
    allCost = allCost + stats.getCost();
  //      Logger.log(campaign.getName() + ': ' + stats.getCost() + ' grn');
  }
  //Получаем расход за 7 дней по активным кампаниям
  while (campaignIterator2.hasNext()) {
    var campaign2 = campaignIterator2.next();
    var stats2 = campaign2.getStatsFor("LAST_7_DAYS")
     allBudget = allBudget + stats2.getCost();
  }
  allBudget = allBudget / 7;
  ss.getRange("E2").setValue(allCost);
  ss.getRange("B4").setValue(allBudget);
}
И вносим в него изменения, эту строчку пишем url своего документа, который мы заранее сохранили на предыдущем шаге:
var ss = SpreadsheetApp.openByUrl(
    "https://docs.google.com/spreadsheet/ccc?key=0AmlDmpbBj8rLdFJBSi1ZdklHbTVsRGt3Wm9VUG9jUmc#gid=0");
А в эту, пишем номер листа клиента в нашем документе:
  ss.setActiveSheet(ss.getSheets()[15]); //активируем лист
И не забываем, что подсчет начинается с 0.

После чего, нажимаем сохранить и закрыть.

Должно получиться что-то такое:
Готовый скрипт (нажмите для увеличения)
После закрытия, меняем настройки периодичности запуска скрипта, на «раз в час» и нажимаем «выполнить»:
Изменяем расписание и запускаем
После чего, данные о расходах выгружаются в нашу Google таблицу и рассчитываются нужные нам показатели.
Важные моменты
Скрипт далек от идеала, но работает и решает свои задачи. Прошу обратить внимание, что в документе нельзя менять местами вкладки, так как скрипт не будет знать куда отдавать данные.

В случае, если кампания уже идет, чтобы не заполнять все оплаты и заведения на аккаунт, можно воспользоваться полями «начальный остаток» — сумма которая фактически лежит на аккаунте и «начальный расход» — сумма, которая фактически была потрачена на начало периода.
Made on
Tilda