Mask SecretDebugging “is the API key loaded?” should not paste Script Property values into a shared Log sheet. maskSecret(secret, keepStart, keepEnd…
Truncate For CellSheets cells top out around 50k characters. Dump a full err.stack, UrlFetch body, or JSON blob with setValue and the run throws mid-flight…
Format in Spreadsheet TimezoneLog stamps and export filenames that disagree with the sheet’s timezone are a classic bootstrapper footgun. formatInSpreadsheetTimezone(date…
Email yourself when the nightly job failsYou've got a time-driven sync that "mostly works" until it doesn't — and you find out three days later from a confused teammate. Triggers…
A Log sheet you’ll actually read laterLogger.log is fine until you need yesterday's failure and the Executions page shrugged. A tiny Log sheet — timestamp, level, message…