The quota model is not what you think it is
Google publishes per-service daily limits in the Apps Script quotas table, and the numbers differ sharply by account type. Consumer accounts (anything ending in @gmail.com) get 100 outbound emails per day and 20,000 UrlFetch calls. Workspace accounts get 1,500 emails and 100,000 UrlFetch calls. The first time I hit this error, I spent an hour re-reading my code looking for a loop bug. There was no bug. I was just on a consumer account and had sent 101 emails to a test list.
The part the docs bury is that the reset is not at midnight in your timezone. Google uses a rolling 24-hour window anchored to when the first call in the current cycle was made, or possibly to UTC midnight — the exact anchor is undocumented and has changed across years. Treat it as 'somewhere in the next 24 hours' and plan accordingly. Waiting until 12:01 AM and retrying is a common trap; if your window anchors to 10 PM, you wait two hours for nothing.
This means the only reliable fix is spending less quota, not timing your way around the limit. Batch, cache, and skip repeat work.