Delete Disapproved Ads
Finds ads with non-approved policy status and removes them, with a dry-run mode enabled by default for safer review first.
Script Code
Use this when you want a controlled cleanup workflow for disapproved ads rather than handling each one manually in the interface.
Preview is public. Unlock full code with name and email.
/**
* ==========================================================
* Delete Disapproved Ads
* ==========================================================
* Description: Removes ads with non-approved policy status.
* Defaults to dry-run mode for safer review first.
*
* Copyright (c) 2026 TwoSquares. All Rights Reserved.
* Developed by Kiril Ivanov
*/
function main() {
var DRY_RUN = true;
var REQUIRED_LABEL = "";
// ... preview shortened
}About This Script
Delete Disapproved Ads is a cleanup script for accounts where outdated or broken ads have accumulated and a manual policy cleanup is too slow. It checks enabled and paused ads, identifies ads whose policy status is not approved, and can remove them in bulk.
This version is intentionally safer than a one-click destructive script. It defaults to dry-run mode, logs exactly what would be removed, and lets you scope execution with an optional label so the cleanup can be staged.
The script uses the current Google Ads Scripts ad interface rather than outdated report-only approaches. That keeps it simpler and more reliable for actioning policy-status cleanup directly.
Implementation Notes
- Run the script with DRY_RUN set to true first and review the logs carefully.
- Optionally set REQUIRED_LABEL if you only want to process ads tagged for cleanup.
- If the output looks correct, switch DRY_RUN to false and run again.
- Schedule only after you are comfortable with the scope and the policy statuses in your account.
- Keep a label-based workflow if you want to avoid broad account-wide removals.
More Scripts In This Library
Disapproved Ad Alert
Monitors enabled ads for policy issues and can email a daily alert with disapproved/limited ads before delivery is impacted.
Disapproved Ad Checker
Exports disapproved ads with campaign and ad group context so you can review policy issues quickly without hunting through the interface.
Enabled Ad Count By Ad Group
Counts enabled ads per ad group and exports the result into a Google Sheet so thin ad groups are easy to spot.
Final URL UTM Consistency Audit
Audits enabled ad/keyword final URLs for missing UTM parameters and inconsistent tagging patterns.
Delete Disapproved Ads FAQs
Common setup, usage, and troubleshooting questions for this script.