Skip to content

v0.59.0 - gaskets: BookGasket and SheetGasket (2026-03-29)

What Changed?

This release introduces BookGasket and expands SheetGasket in the new gaskets module. BookGasket provides cached access to multiple Spreadsheet objects by ID, URL, or active context. SheetGasket now offers getById, getByUrl, and getActive methods alongside the existing getByName, getOrCreate, and getSheets. Legacy gaslets classes (BookArtisan, SheetArtisan, sheet-dataframe) are marked as will-be-deprecated.


What's New

Main Feature: BookGasket

What it does: Manages multiple Spreadsheet objects with caching and logging. Avoids repeated SpreadsheetApp.openById() calls by storing results in a JunkPocket cache keyed by spreadsheet ID.

How to use it:

TypeScript
const gasket = new BookGasket({ name: "MyBooks" });

const byId  = gasket.getById("1ABC...XYZ");
const byUrl = gasket.getByUrl("https://docs.google.com/spreadsheets/d/1ABC...XYZ/edit");
const active = gasket.getActive();

Main Feature: SheetGasket — new methods

What it does: Adds getById(book, gid), getByUrl(url), and getActive(book) to SheetGasket, mirroring the access patterns of BookGasket.

How to use it:

TypeScript
const gasket = new SheetGasket({ name: "MySheets" });
const book = SpreadsheetApp.getActiveSpreadsheet();

const byName = gasket.getByName(book, "Sales");
const byId   = gasket.getById(book, 123456789);
const byUrl  = gasket.getByUrl("https://docs.google.com/spreadsheets/d/1ABC...XYZ/edit#gid=123456789");
const active = gasket.getActive(book);

Added

  • gaskets/BookGasket — cached Spreadsheet management (getById, getByUrl, getActive)
  • gaskets/SheetGasket.getById — open sheet by numeric gid with caching
  • gaskets/SheetGasket.getByUrl — open sheet from URL (extracts spreadsheet ID and gid)
  • gaskets/SheetGasket.getActive — returns active sheet cached under "__active__"
  • gaskets/lighter — AfterGlow logging added to getOrNull and getOrCache

Changed

  • gaskets/SheetGasket.get → renamed to getByName
  • gaskets/SheetGasket.getAll → renamed to getSheets
  • gaskets/lighter — now depends on AfterGlow for structured logging

Fixed

  • Nothing

Is It Safe to Upgrade?

  • Breaking Changes: Yes — SheetGasket.get() renamed to getByName(), getAll() renamed to getSheets()
  • Backward Compatible: No — update call sites using SheetGasket

Release Details

  • Date: 2026-03-29
  • Version: v0.59.0
  • gaslamp: 118
  • pilotlamp: 76
  • Files Changed: 6
  • Commits:
    • 64365b49 chore: update VERSIONS.toml for v0.59.0 and uv.lock
    • d1e071a6 bump: version 0.58.0 → 0.59.0
    • b39920ed docs(gaslets): mark all BookArtisan methods as will-be-deprecated
    • 4aeba4fc docs(gaskets): update SheetGasket docstrings with method overview and fixes
    • d11e2ee0 refactor(gaskets): rename get to getByName and getAll to getSheets in SheetGasket
    • e4ef6a2e feat(gaskets): add getById, getByUrl, and getActive to SheetGasket
    • 54410f54 refactor(gaskets): remove duplicate logs from SheetGasket and update docstrings
    • e2085b0e docs(gaskets): fix BookGasket docstrings
    • 6edc67d9 refactor(gaskets): simplify BookGasket methods using getOrCache from lighter
    • 30584e40 feat(gaskets): add AfterGlow logging to getOrNull and getOrCache in lighter
    • bae5900b refactor(gaskets): improve BookGasket caching and rename get to getById
    • cdc64be2 feat(gaskets): add BookGasket class for cached Spreadsheet management
    • 29c911fc docs(gaslets): mark all sheet-dataframe functions as will-be-deprecated
    • cf3f7e5a docs(gaslets): mark all SheetArtisan methods as will-be-deprecated

Known Issues

  • None

Next Steps

  • Deprecate and remove legacy gaslets classes (BookArtisan, SheetArtisan, sheet-dataframe) in a future release
  • Consider adding DriveGasket and other GAS service gaskets