Sooner or later one of the ads will perform better than the other(s) so that if you run only the better performing ad you get more visitors/conversions. Also after maybe you can create an even better performing ad... and so on.
My first (basic & slow) script is checking your whole account for Ad Groups without more Text Ads (Adwords usually highlight the Ad Group without an Ad Text, and also this script will list those Ad Groups too).
The problematic Ad Groups will be listed on the Logger Output and you'll get an email about the number of problematic Ad Groups... and you can start adding shinny new text ads to make a very basic A/B testing.
Yeah, I know the script is slow and not optimized (if I not group the output by Campaigns it could run faster), however it could help you a lot especially if you have at least 100 Ad Groups or even more...
//---------------------------------------------- //÷÷÷ Created by Erno Horvath +++ //÷÷÷ http://adwords-scripts.blogspot.co.uk +++ //---------------------------------------------- // Comma-separated list of recipients. var RECIPIENT_EMAIL = 'example@example.com'; //This scipt list all the Ad Groups with only one Ad Text. //A/B testing for Ads is essential to improve CTR function main() { var consoleText = ""; var numOfAdGroups = 0; var justOneAdText = 0; //Get All Enabled Campaigns //It's just because to help list the AdGroups groupped by Campaign //The list will be ordered by Impressions to see the most important Ad Groups first var campaignIterator = AdWordsApp.campaigns() .forDateRange("LAST_30_DAYS") .orderBy("Impressions DESC") .withCondition("Status = ENABLED") .get(); while (campaignIterator.hasNext()){ var campaign = campaignIterator.next(); //Get All Enabled AdGroups within the Campaign var adGroupIterator = AdWordsApp.adGroups() .withCondition("CampaignName CONTAINS_IGNORE_CASE '" + campaign.getName() + "'") .withCondition("Status = ENABLED") .get(); while (adGroupIterator.hasNext()){ var adgroup = adGroupIterator.next(); var adTextNum = 0; //Get All Enabled Ad Text within the Ad Group var adIterator = AdWordsApp.ads() .withCondition("AdGroupName CONTAINS_IGNORE_CASE '" + adgroup.getName() + "'") .withCondition("CampaignName CONTAINS_IGNORE_CASE '" + campaign.getName() + "'") .withCondition("Status = ENABLED") .withCondition("Type = TEXT_AD") .get() while (adIterator.hasNext()) { var ad = adIterator.next(); //Increase the adTextNum if a Text Ad found. adTextNum++; } if (adTextNum < 2) { Logger.log( adgroup.getCampaign().getName() + " " + adgroup.getName() + " has one or less active Ad Text." ); justOneAdText++; }; } } // Logger.log('Ad Text report finished.'); MailApp.sendEmail(RECIPIENT_EMAIL, 'New Ad Text Report', 'We have found' + ' ' + justOneAdText + 'problem(s). Please check the log for more details.' ); }
Please don't hesitate to share at the comment section how many Ad groups you have found without two or more Ad texts :)