📗 This content is the Smart Bidding Ninja Script user manual, the same one the script writes in the «Manual» tab of its spreadsheet. Here you can search it, listen to it, highlight it and save it to favourites.
Since v39 the script works with two different modes. It decides automatically which one to use depending on the time of day and on whether the nightly cycle has already run today. This lets you keep the script on an hourly trigger without fearing that it will touch budgets on every pass.
NIGHTLY mode
This is the full cycle. It recalculates targets, adjusts budgets according to performance, regenerates Day-Stats completely, writes to History, checks whether it is time to send the weekly or monthly email, and regenerates the Manual tab. It is what SBNS has always done, but now it happens only once a day.
| Aspect | Detail |
|---|---|
| When it runs | Once a day, on the first run of the script between 04:30 and 06:00 (in the time zone of your Google Ads account) |
| Why at that hour | So that the previous day's conversions are already consolidated in Google Ads (there is always a few hours' lag in the data) |
| What it does | Everything: targets, budgets, emails, manual, history |
| Control marker | When it finishes, it writes the date of the last nightly run in the auto-managed band of Config so it does not repeat itself |
INTRA-DAY mode
Designed to react to the label changes you make during the day when you are optimising manually. If you change a campaign's scenario (for example from .neutro to .ninja2), you do not have to wait until the next day: the script detects it on the next hourly run and applies the corresponding target adjustment.
| Aspect | Detail |
|---|---|
| When it runs | On every run outside the 04:30-06:00 window, or if the nightly cycle has already run today |
| What it does | It ONLY checks whether any campaign has changed scenario. If so, it adjusts that campaign's target. Nothing else |
| What it does NOT do | It does not touch budgets. It does not update other Day-Stats rows. It does not send emails. It does not regenerate the manual |
| Day-Stats | Only the row of the affected campaigns is updated. The changed cells are painted light yellow so they stand out from the nightly data |
| History | One record is added for each detected change, marked [INTRA-DAY] in the Type column |
Recommended trigger
Set the script up with an hourly trigger in Google Ads Scripts. The script will decide for itself which mode to apply on each run.
💡 Why only scenario changes intra-day? Because changing .ninja2 → .conservador is a deliberate decision that the script must respect immediately. Changes to .max, .min, .p or .presupuesto off, on the other hand, affect the budget, and budget adjustments deliberately happen only once a day (Smart Bidding needs stability).
🟡 Cells painted light yellow in Day-Stats indicate changes applied during the day (intra-day). The next nightly cycle will regenerate Day-Stats completely and the yellows will disappear as they merge with the rest of the day's information.