What Utilities.sleep actually does to your clock
Utilities.sleep(milliseconds) blocks the current execution thread for the duration you specify. That sounds obvious, but the implication is easy to miss: Apps Script gives every run a hard 6-minute wall-clock limit, and sleep counts toward that limit. A Utilities.sleep(60000) call — one minute — eats one-sixth of your entire budget without doing a single unit of work.
The upside is precision. For small delays in the 200ms–2000ms range, sleep is the right tool. The Sheets API allows roughly 60 write requests per minute per project. If you fire all 60 in the first three seconds, the next call returns a 429 and your script either crashes or you waste time in error-handling. Sleeping 1,100ms between batches of ten keeps you safely under the quota with no retry logic needed.
The first time I hit a Sheets quota wall, I added a 5-second sleep between every row. On a 200-row sheet that was 1,000 seconds of sleep — the script timed out at 360 seconds every single run. Batching the sleep to once per 10 rows brought the total pause time down to ~22 seconds.