Created
January 3, 2017 20:29
-
-
Save rfharmon/ace1b11592db3f3718d13901b3c6024a to your computer and use it in GitHub Desktop.
Pauses extra ads in AdWords ad groups.
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
| // Enter the maximum number of ads you want running in an ad group. | |
| var maxAds = 2; | |
| function main() { | |
| var getAccount = MccApp.accounts().get(); | |
| while (getAccount.hasNext()) { | |
| var account = getAccount.next(); | |
| MccApp.select(account); | |
| var accountName = account.getName(); | |
| Logger.log("Account: " + accountName); | |
| var adGroupIterator = AdWordsApp | |
| .adGroups() | |
| .withCondition('CampaignStatus=ENABLED') | |
| .withCondition('Status=ENABLED') | |
| .withCondition('AdNetworkType1 IN [SEARCH]') | |
| .withCondition('CampaignStatus = ENABLED') | |
| .get(); | |
| while (adGroupIterator.hasNext()) { | |
| var adGroup = adGroupIterator.next(); | |
| var adGroupName = adGroup.getName(); | |
| var adGroupId = adGroup.getId(); | |
| var campaign = adGroup.getCampaign(); | |
| var campaignName = campaign.getName(); | |
| var adIterator = AdWordsApp | |
| .ads() | |
| .withCondition('AdNetworkType1 IN [SEARCH]') | |
| .withCondition('CampaignName = "' + campaignName + '"') | |
| .withCondition('AdGroupName = "' + adGroupName + '"') | |
| .withCondition('Status = ENABLED') | |
| .get(); | |
| var adSet = []; | |
| var adSetContainer = []; | |
| var adCount = adIterator.totalNumEntities(); | |
| if (adCount > maxAds) { | |
| Logger.log("There are " + adCount + " enabled ads in the " + adGroupName + " ad group of the " + campaignName + " campaign."); | |
| while (adIterator.hasNext()) { | |
| var ad = adIterator.next(); | |
| adSet.push(ad); | |
| } | |
| for (thisAd in adSet) { | |
| var stats = adSet[thisAd].getStatsFor("ALL_TIME"); | |
| var adId = adSet[thisAd].getId(); | |
| var ctr = stats.getCtr(); | |
| var adSets = { | |
| theId: adId, | |
| theCtr: ctr, | |
| theAdGroupId: adGroupId | |
| }; | |
| adSetContainer.push(adSets); | |
| adSetContainer.sort(function(a, b) { | |
| return a.theCtr - b.theCtr | |
| }); | |
| } | |
| for (var extraAdCounter = 0; extraAdCounter < (adCount - maxAds); extraAdCounter++) { | |
| var idOne = adSetContainer[extraAdCounter].theId; | |
| var agIdOne = adSetContainer[extraAdCounter].theAdGroupId; | |
| var idAdIter = AdWordsApp.ads().withIds([ | |
| [agIdOne, idOne] | |
| ]).get(); | |
| while (idAdIter.hasNext()) { | |
| var pausedAdNumber = extraAdCounter + 1; | |
| Logger.log("Pausing Low Performing Ad #" + pausedAdNumber); | |
| var extraAd = idAdIter.next(); | |
| extraAd.pause(); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This script disable all Ads with lower CTR? Could be done with lower CR?