Paste whatever you have copied!

var MONTHLY_BUDGET = 990.00; // set to less than client budget if run daily, more if hourly.

function main() { var itsFirstOfTheMonth = ((new Date()).getDate() == 1); var totalCostMTD = getTotalCost().toFixed(2); Logger.log("Total cost this month: $" + totalCostMTD + "; Monthly budget: $" + MONTHLY_BUDGET );

if (totalCostMTD >= MONTHLY_BUDGET) { Logger.log("Spend has reached monthly budget."); applyLabel(); pauseCampaigns();

};

if (itsFirstOfTheMonth) { reenableCampaigns(); };

};

function getTotalCost() { var campIter = AdWordsApp.campaigns().get(); var totalCost = 0; while (campIter.hasNext()) { totalCost += campIter.next().getStatsFor("THIS_MONTH").getCost(); }; return totalCost; };

function applyLabel() { var labelName = 'Active Last Month'; AdWordsApp.createLabel(labelName);

var campaignIterator = AdWordsApp.campaigns() .withCondition('CampaignStatus = ENABLED') .get(); while (campaignIterator.hasNext()) { var campaign = campaignIterator.next(); campaign.applyLabel(labelName); }; Logger.log('labels applied.'); };

function pauseCampaigns() { var campaignIterator = AdWordsApp.campaigns() .withCondition('CampaignStatus = ENABLED') .get(); while (campaignIterator.hasNext()) { var campaign = campaignIterator.next(); campaign.pause(); }; Logger.log('enabled campaigns paused'); };

function reenableCampaigns() {

var label = AdWordsApp.labels() .withCondition('Name = "Active Last Month"') .get().next();

var campaignIterator = label.campaigns().get();

while (campaignIterator.hasNext()) { var campaign = campaignIterator.next(); campaign.removeLabel('Active Last Month'); campaign.enable(); }; Logger.log('First of the month: campaigns reenabled') };

/r/CasualConversation Thread