Typically, when you think of sharing negative lists and campaign extensions together, it’s something that you may not always do, as users are so different.  Lists are meant for targeting, while extensions spruce up your ads.

But from an AdWords Scripts point of view, they’re certainly similar.  These two things are objects that exists on their own and then gets attached to campaigns.  For both of them, it can be a pain to make sure they get attached to the campaigns you want

But, there’s a cure for this pain.  It’s a little thing called automation.

There was a script that was released last month by the the tech team at Brainlabs that helped to make sure shared lists were applied to all campaigns, and because extensions and lists are fairly similar to each other in AdWords Scripts, Brainlabs expanded the code so it can copy extensions as well!

You can check out the script below!  If you want to give it a go, just copy the code and paste into a new AdWords Script in your account.  There some options that need to be changed though.  Here’s the list of what has to be changed, according to :

  • Filter the campaigns things will be applied to with the two arrays, campaignNameContainsand campaignNameDoesNotContain. 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 not exclude any campaigns.
    • If you need to put a double quote into campaignNameContains or campaignNameDoesNotContain, put a backslash before it.
  • If ignorePausedCampaigns is true, then the script will only look at currently active campaigns. Set this to false if you want to apply extensions and lists to currently paused campaigns.
  • campaignToCopy is the name of the template campaign, whose lists and extensions will be copied. This is case-sensitive.
    • The template campaign can be paused, but it can’t be removed.
  • extensionsAndLists is an array of which types of extension and list the Script will copy. The possible values are “sitelinks”, “callouts”, “reviews”, “mobileApps” (app extensions), “phoneNumbers” (call extensions), “excludedPlacementLists” and “negativeKeywordLists”.
  • labelName is the name of the label which will be applied to campaigns once they’ve had the extensions/lists added. This means you can see which campaigns have been covered. Campaigns that already have the label will be ignored: if the Script doesn’t cover them all in one run it can go again until it covers them all.

Not only that, Daniel included these notes:

  • This only works on Search, Display and Search with Display Select campaigns.
  • The script can’t tell the difference between Search, Display and Search with Display Select campaigns. You have to use the campaign names to make sure negative lists intended for Search don’t end up in Display campaigns.
  • The Script doesn’t do anything with ad group extensions or account extensions – only campaign level ones.
  • Scripts can only run for 30 minutes, which may not be enough if you’ve got lots of campaigns or lots of extensions. But if the script times out, you can just run it again – it will say in the logs when everything has been covered.


Source –