Use it for
- Compare weekday and hourly patterns across selected campaigns.
- Use the heatmaps to prepare a scheduling investigation or a reporting discussion.
Before you open it
Public JavaScript on GitHub, available without purchase or signup. Configure the script in Google Ads before use.
What it does when run
Reads Google Ads; clears five named report tabs and can send email.
- Output
- Five Google Sheets heatmaps; optional email
- Default reporting window
- 56 days ending yesterday
- Google Ads account access with permission to add and authorise scripts.
- Review CONFIG, account scope and thresholds before the first run.
- A dedicated Google Sheets report with appropriate access.
- Leave RECIPIENT_EMAILS empty for log-only delivery, or authorise email only for recipients you intend to receive account data.
Supporting links
The people behind the script
- Dimitris BachtsevanisOriginal script author at Omnicliq
- OmnicliqPublisher and copyright holder
Resource notes and library artwork curated by Paid Media Collective. The original work belongs to the contributors credited above. Inclusion does not imply a partnership or a member submission.
Apache License 2.0. Copyright 2026 Omnicliq; retain the original licence and attribution when adapting the code.
Source review and practical limitations
Source reviewed · 7 September 2026. We reviewed the source to the level stated here; tools, courses and account workflows have not been tested end to end.
- The CPA tab writes 0 when there are no conversions. Treat these cells as undefined CPA, not as free conversions; cross-check the Cost and Conversions tabs.
- Aggregates included campaigns together. Sparse data, conversion lag and different campaign goals can distort comparisons.
- Does not change schedules or bids. Smart Bidding and business opening hours still need separate consideration.
- Code inspected and JavaScript syntax parsed only. No execution in a Google Ads account, no live query validation and no email delivery test.
- Reports use the configured lookback ending yesterday. Check the date window in the account timezone, especially around daylight-saving changes.
- The script can create a new spreadsheet when its URL is blank. Set the report URL after the first run; reruns clear the named output tabs, including any notes stored there.



