A Google Apps Script for automating bulk creation of Google Ads campaigns, ad groups, keywords, and Responsive Search Ads (RSAs) from Google Sheets.
- Bulk Campaign Creation - Create multiple campaigns via CSV bulk upload
- Ad Group Management - Build ad groups with custom bids and status
- Keyword Uploads - Support for exact, phrase, and broad match types
- RSA Builder - Create Responsive Search Ads with up to 15 headlines and 4 descriptions
- MCC Support - Operate across multiple accounts from a Manager account
- Duplicate Prevention - Automatic tracking to prevent re-uploading
- Email Notifications - Get notified when uploads complete or fail
Create a Google Sheet with these tabs:
config and counts- Configuration settingscmpns- Campaign dataadgrs to upload- Ad group datakws to upload- Keyword datarsas to upload- RSA data
- Open Google Ads → Tools & Settings → Bulk Actions → Scripts
- Create a new script
- Paste the contents of
src/bulk-uploader.js - Update the
SPREADSHEET_URLvariable with your Sheet URL - Save and authorize
- Set your configuration in the
config and countstab - Add your data to the appropriate tabs
- Run the script manually or schedule it
| Document | Description |
|---|---|
| Setup & Usage Guide | Step-by-step setup and usage instructions |
| Technical Documentation | Architecture, functions, and data specifications |
| Sheet Templates | Example data structures for each tab |
google-ads-bulk-uploader/
├── README.md # This file
├── LICENSE # MIT License
├── src/
│ └── bulk-uploader.js # Main Google Ads Script
├── docs/
│ ├── INSTRUCTIONS.md # Setup and usage guide
│ └── TECHNICAL.md # Technical documentation
└── examples/
├── config-template.csv # Config tab structure
├── campaigns-template.csv # Campaign data structure
├── adgroups-template.csv # Ad group data structure
├── keywords-template.csv # Keyword data structure
└── rsas-template.csv # RSA data structure
| Setting | Values | Description |
|---|---|---|
| Customer ID Mode | ON/OFF | Enable MCC account selection |
| Campaign Module | ON/OFF | Process campaign uploads |
| Ad Group Module | ON/OFF | Process ad group uploads |
| Keyword Module | ON/OFF | Process keyword uploads |
| RSA Module | ON/OFF | Process RSA uploads |
| Notification Email Mode | ON/OFF | Send email notifications |
The script processes entities in dependency order:
Campaigns → (2 min wait) → Ad Groups → Keywords → RSAs
Each module can be toggled independently in the configuration.
| Input | Match Type | Output |
|---|---|---|
| keyword | exact | [keyword] |
| keyword | phrase | "keyword" |
| keyword | broad | +keyword |
- Google Ads account with Scripts access
- Google Sheets with edit permissions
- MCC access (for multi-account operations)
- Single account per execution (first ID if multiple provided)
- No negative keyword support currently
- RSA pinning not implemented
- Campaign creation via bulk CSV (limited customization)
- Fork the repository
- Create a feature branch (
git checkout -b feature/new-feature) - Commit your changes (
git commit -am 'Add new feature') - Push to the branch (
git push origin feature/new-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built for scalable Google Ads account management
- Designed for paid media specialists and agencies
Note: This script is provided as-is. Always test in a non-production account first.