View and change all your budgets easily with this script

You can download and modify all your budgets across multiple Google Ads accounts in a single Google Sheet.

Chat with SearchBot

While effective budget management is Paid Search 101, it can also be hard work. Budgets are set at campaign level, and some advertisers have hundreds if not thousands of campaigns in their account. 

Not only that, but many advertisers run multiple accounts – for example, separate accounts for different regions across the globe or for smaller businesses within a larger organization.

Changing all these campaign budgets in multiple accounts is hard enough, but it also needs to be done regularly – monthly is not an unreasonable frequency to expect. And after making large-scale changes, you will often need to go back and make smaller calibrations. For all its charms, the Google Ads interface can be really slow. 

Long story short: the bigger your accounts are, the more campaigns you have, the more budgets you have to change one by one, the longer the interface takes to load. 

And what do we say to slow, repetitive tasks? Script it, of course!

Here’s a way to bypass the slow interface altogether, and make all of your changes in one place. 

What the script does

In order to avoid the tedious process of aggregating data from multiple Google Ads accounts, this script will pull a full list of all budgets for every account that you feed it into a single Google Sheet. You can see both campaign-specific and shared budgets. 

From there, you can make changes to all your budgets individually, in all your accounts in an MCC, all in one place, without having to do so in Google Ads. You can even make bulk budget updates using standard Google Sheet formulas. 

It’s a simple concept, but really effective. The initial set up as you feed it the information can be time-intensive but think of it as an investment – it will save you loads of time going forward. 

How to get started:

1. Google Sheet setup for download

First, you’ll need to make a copy of this spreadsheet.

On the Configuration tab, enter the account names and the account IDs for every account you’d like to check, with one account per row. You can add as many rows as you need using the ‘Add’ button underneath your current rows. 

Add any filtering options you might like to apply by using the ‘Operator’ column and entering key words in the campaign names you’d like to pull using the ‘Campaign Name Contains’ and ‘Campaign Name Does Not Contain’ columns. You could use this, for example, to only pull budgets on brand campaigns, or only one specific product line. This is also helpful if you’re pulling from multiple large accounts to limit how much you’re downloading at once; Google Ads scripts time out after 30 minutes which limits how much data you can download. 

The active/paused column allows you to maintain a full list of your accounts in one Google Sheet whilst choosing which budgets to download each time – just change their status to ‘Paused’ if you wouldn’t like that data. This also helps to prevent the script timing out. 

Once you’ve added all your accounts, copy the URL of your spreadsheet in order to insert it into the script. 

2. Adding the script to Google Ads

If you are pulling data from multiple accounts, this script will need to run at MCC level.

Once signed into your MCC in Google Ads, navigate at the top bar to Tools and Settings > Bulk Actions > Scripts. Click the blue plus button in the top left to create a new script, give it a memorable name to make sure you can find it again to run as needed, and give it any authorization it asks for. 

Then paste all of this code into the input box, and then modify the ‘Options’ to control how the script behaves: 

var RUN_TYPE = “”

For the first run you will need to set this to “DOWNLOAD” – this will pull current budgets to your spreadsheet. 

var SPREADSHEET_URL = “”

Insert your pre-prepared spreadsheet URL here between the quotation marks. 

var ignorePausedCampaigns = “”

“Paused” refers to whether campaigns are paused in your Google Ads account – you might not want to pull budget data for campaigns that aren’t running anyway. Set this to “true” or “false” depending on whether you’d like paused campaigns to be ignored. 

3. Running the script to download & changing budgets

Once you’ve entered the variables, click RUN at the bottom, and then select ‘Run without preview’ in the pop up. If you go back to your copy of the Google Sheet and navigate to the ‘Budget Dashboard’, you will see that the table has populated with all your budgets.  

Note that you can tell whether a budget is a shared budget using the ‘Campaign count’ column, which lets you know how many different campaigns that budget is running on. 

4. Changing budgets

Changing budgets is a simple process, just enter the new budget value in the New Budget column (H). 

To save time, you can use Google Sheet formulas – the script will read the cell output value, not the formula itself. Bear in mind: to prevent any errors, you will need to use the ROUND function in Google Sheets to make sure your new budget is rounded to two decimal places. 

For example, if I wanted to increase my old budget (F7) by 20%, I would use the formula below in cell H7 (New Budget):

=ROUND((F7*1.2),2) where the ‘2’ denotes the number of decimal places.

You can then copy these formulae by hovering over the bottom left of the cell and dragging down, saving more time. 

Once you’re happy with your new budgets in the Google Sheet, return to the script in Google Ads. 

5. Updating budgets in Google Ads

This time, you only need to change one Option. Swap the var RUN_TYPE from “Download” to “Update” and, again, run it without preview. 

You will then be taken to the Script History to check the logs to ensure the script ran without errors, and see what changes it made. The script will automatically re-download the new data so you can also view the updated budgets in the Google Sheet dashboard.

One final note: As this script behaves differently depending upon whether you have set it to download or update, it should be used ad hoc with the run type you need – do not schedule it. You only want it to modify your budgets when you have oversight over the changes it’s making. 


Opinions expressed in this article are those of the guest author and not necessarily Search Engine Land. Staff authors are listed here.


About the author

Daniel Gilbert
Contributor
Daniel Gilbert is the CEO at Brainlabs, the best paid media agency in the world (self-declared). He has started and invested in a number of big data and technology startups since leaving Google in 2010.

Get the must-read newsletter for search marketers.