Batch Get RangesReading ten ranges with ten getValues() calls means ten round trips. batchGetRanges(spreadsheetId, ranges) reads them all in one call to the…
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…
Budget Apps Script quotas like a grown-upApps Script quotas aren't a surprise if you treat them like a budget. UrlFetch calls, email sends, spreadsheet reads, and total runtime all…
Custom functions that don’t thrash your sheetCustom functions look like spreadsheet superpowers until one volatile formula starts refetching an API on every edit. Use them for pure…
Cache JSON with a TTLHitting the same API or expensive sheet scan every trigger run burns quota. CacheService gives you a short-lived store (max ~6 hours…