google-adwords-redwhite-1920We are less than a month away from Christmas, and we all will defiantly more busy this time of year.  Even with the extra busy that we will be experiencing, we have to make sure we don’t make any mistakes.  It’s pretty easy to make mistakes this time of year because of that.

This is why automating is an important thing to do if you can do it.  When it gets busy, mistakes happen, but can be caught and even corrected without taking up your time.  So to make sure you don’t pause your important Black Friday ads, just to realize you didn’t have any other ads to replace them, due to disapproved ads or something, it’s a good idea to have a script handy!

 has already shared a script that to finds ad groups with no ads. But with this newest script from Brainlabs, you can do it even better.  Now, you can automatically create an ad, filling the empty ad group and make sure you don’t pass up the traffic you need to see on your site.

Of course, this is only going to generate a generic ad, but at least you know you have something in place, rather than have nothing showing at all.  These new ads will all be labeled, so it’ll be easy to find them and rewrite them.

Keep in mind that Google will eventually get rid of standard text ads.  Right now, there isn’t any indication when this will happen (You won’t be able to create new standard text ads after January the 31, but existing ones will still serve traffic).  But for the time being, you can use this script to put an expanded text ad into all ad groups that don’t already contain an ETA.

The following instructions come from Daniel himself, and then below that is the script itself:

To use the script for yourself, open a new Script in AdWords and copy in the code below. Then change the settings at the top:

  • campaignNameContains and campaignNameDoesNotContain filter which campaigns the script will look at. For example, if campaignNameContains is
    ["Brand", "Generic"], then only campaigns with names containing “brand” or “generic” are included. If campaignNameDoesNotContain is ["Display", "Competitor"], then any campaigns with names containing “display” or “competitor” are ignored.
    • This is not case-sensitive.
    • Leave blank, [], to include all campaigns.
    • If you need to put a double quote into campaignNameContains or campaignNameDoesNotContain, put a backslash before it.
  • ignorePausedCampaigns should be set to true if you only want to look at currently active campaigns, or false if you want to include paused campaigns as well.
  • ignorePausedAdGroups should be true if you only want to look at currently active ad groups, or false to look at active and paused ad groups.
  • checkedLabelName is the label to show which campaigns and ad groups the script knows aren’t empty (as either they were already full or they’ve just had a new ETA added). This means you can rerun the script as much as you need if your account is so big the script timed out — anything with this label will be ignored in future runs.
    • You could also manually label campaigns and ad groups with this label, to prevent the script from checking them.
  • newAdLabelName is the label given to the expanded text ads that the script creates.
  • If onlyLookForETAs is true, then the script will create an expanded text ad in any ad group that doesn’t contain one. If it’s false, the script will check if there is already an ad of any type — like a standard text ad or a banner ad — and only create an ETA if there are no ads of any type already there.
  • There are six variables to make the new ETA from:
    • headlinePart1 and headlinePart2 are the headlines (max of 30 characters).
    • description is the description (max of 60 characters).
    • finalUrl is the landing page. If this doesn’t start with “http://” or “https://” the script will add “http://” for you.
    • urlPath1 and urlPath2 are the paths that show in the display URL. They are optional, so leave as "" if you don’t want them (max of 15 characters).

AdWords Scripts can only run for 30 minutes at a time, so if you’ve got a big account, you may not be able to cover all campaigns in one go. That’s why the script labels the ad groups and campaigns once they’re processed: if the script times out, then you can just run it again and again, and it will always look only at ad groups it hasn’t checked before.

The script will check the ad text you’ve given, to make sure you’re within the character limits and you don’t have too many exclamation marks, but AdWords may still refuse to make your ad because of policy violations. This won’t be flagged in preview runs; once you’ve run the script, you need to check the logs for messages about ads not being created. Note that ad groups where ads couldn’t be created won’t be labeled, because they’re still empty — so if there are problems, you can just change the ad text and run the script again.

If you don’t want to use the same template ad everywhere, you could run the script multiple times: use the campaignNameContains to look at different campaigns each time, and change the template ETA each time to suit those campaigns.