Budget management is Paid Search 101 for any account manager, but it’s not necessarily a quick task.
For an advertiser with hundreds, if not thousands, of campaigns across multiple accounts, managing budgets which are set at campaign level is time-consuming. Not only that, but it also needs to be done regularly – monthly is pretty standard.
Plus the bigger your accounts are, the more campaigns you have, the more budgets you have to change one by one, and the longer the interface takes to load.
Here’s a way to bypass the slow interface altogether, and to manage all of your budget changes in one place.
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.
First, you’ll need to make a copy of the spreadsheet linked below.
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.
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 the code below 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.
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.
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 you wanted to increase my old budget (F7) by 20%, you 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.
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.