На протяжении года много государственных праздников и дополнительных выходных дней. Для части бизнесов не имеет смысла рекламироваться в такие дни. Особенно это касается тех, кто оказывает срочные услуги: аварийное вскрытие замков, услуги эвакуатора, ветклиники. Также это актуально для компаний с большой долей обращений по телефону.
Можно вручную останавливать рекламу перед выходными днями и вручную включать в рабочий день. Можно постоянно настраивать большое количество автоправил. Но зачем, если можно оптимизировать и доверить всю работу скрипту.
Как пользоваться скриптом:
Код скрипта:
/*******************************************************
* Скрипт останавливает кампании в доп.выходные дни и запускает на следующий рабочий день
* Version 1.2
* April 25, 2019
* Created By: Denys German
* CBRAND.agency
********************************************************/
var days_off = '28-04-2019,29-04-2019,30-04-2019,01-05-2019,09-05-2019';//задаем даты выходных дней, в которые кампании не должны работать без пробелов в формате dd-mm-yyyy
var labelName = 'active';//ярлык кампаний, к которым будет примеменяться скрипт
var statusSwitcher = 0;
function main() {
//Подготовка списка дат
var todayStr = new Date();
var yesterdayStr = new Date();
yesterdayStr.setDate(todayStr.getDate() - 1);
var todayStrFromat = Utilities.formatDate(todayStr, AdsApp.currentAccount().getTimeZone(), 'dd-MM-yyyy');
var yesterdayStrFromat = Utilities.formatDate(yesterdayStr, AdsApp.currentAccount().getTimeZone(), 'dd-MM-yyyy');
var dataFormatArr = days_off.split(',');
//Алгоритм определения того, что делать с кампаниями: включать, выключать, ничего не делать
for (var i=0; i<dataFormatArr.length; i++)
{
if(dataFormatArr[i]==todayStrFromat)
{
statusSwitcher = 1;
break;
}
else if(dataFormatArr[i]==yesterdayStrFromat)
statusSwitcher = 2;
}
//Блок включения/выключения кампаний
switch (statusSwitcher) {
case 1:
pauseCampaign();
break;
case 2:
enableCampaign();
break;
default:
Logger.log('Никаких изменений');
}
}
//Остановка кампаний
function pauseCampaign() {
var campaignIterator = AdsApp.campaigns()
.withCondition("LabelNames CONTAINS_ANY ['" + labelName + "']")
.get();
var shopingcampaignIterator = AdsApp.shoppingCampaigns()
.withCondition("LabelNames CONTAINS_ANY ['" + labelName + "']")
.get();
var videocampaignIterator = AdsApp.videoCampaigns()
.withCondition("LabelNames CONTAINS_ANY ['" + labelName + "']")
.get();
while(campaignIterator.hasNext()) {
campaignIterator.next().pause();
}
while(shopingcampaignIterator.hasNext()) {
shopingcampaignIterator.next().pause();
}
while(videocampaignIterator.hasNext()) {
videocampaignIterator.next().pause();
}
Logger.log("Кампании остановлены");
}
//Запуск кампаний
function enableCampaign() {
var campaignIterator = AdsApp.campaigns()
.withCondition("LabelNames CONTAINS_ANY ['" + labelName + "']")
.get();
var shopingcampaignIterator = AdsApp.shoppingCampaigns()
.withCondition("LabelNames CONTAINS_ANY ['" + labelName + "']")
.get();
var videocampaignIterator = AdsApp.videoCampaigns()
.withCondition("LabelNames CONTAINS_ANY ['" + labelName + "']")
.get();
while(campaignIterator.hasNext()) {
campaignIterator.next().enable();
}
while(shopingcampaignIterator.hasNext()) {
shopingcampaignIterator.next().enable();
}
while(videocampaignIterator.hasNext()) {
videocampaignIterator.next().enable();
}
Logger.log("Кампании запущены");
}
Также файл со скриптом можно скачать с Google Drive.