Time StepA 400-line main() that "just feels slow," and no idea whether the fetch, the sheet write, or the PDF export is the culprit. timeStep(name…
Find Error CellsA #REF! on tab 9 can sit there for weeks until someone presents the dashboard. findErrorCells(sheetOrSpreadsheet) scans one tab or every tab…
Tiny Test RunnerApps Script has no built-in test framework, and you don't need one to catch the obvious stuff. runTests(tests) runs an object of named test…
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…