◉GEMINI LABJP
●3.8 FLASH — 3.7 Flash was deprecated on Oct 8. Requests to the old model are routed to 3.8 Flash automatically●NANO 2.1 — gemini-nano-banana-2.1 is GA. gemini-3.1-flash-image is deprecated with no shutdown date yet●DEADLINE — veo-3.1 previews and gemini-omni-flash-preview shut down Oct 22; the Deep Research agent follows Oct 23 (12-13 days left)●Q&A — Users report Gemini CLI marks a subagent run as a success even after it stops at MAX_TURNS●TTS/LIVE — 2.5-era audio and TTS previews shut down Nov 17, 38 days left●NEW — Deprecated with no shutdown date? Re-pick your image-model target with three conditions●3.8 FLASH — 3.7 Flash was deprecated on Oct 8. Requests to the old model are routed to 3.8 Flash automatically●NANO 2.1 — gemini-nano-banana-2.1 is GA. gemini-3.1-flash-image is deprecated with no shutdown date yet●DEADLINE — veo-3.1 previews and gemini-omni-flash-preview shut down Oct 22; the Deep Research agent follows Oct 23 (12-13 days left)●Q&A — Users report Gemini CLI marks a subagent run as a success even after it stops at MAX_TURNS●TTS/LIVE — 2.5-era audio and TTS previews shut down Nov 17, 38 days left●NEW — Deprecated with no shutdown date? Re-pick your image-model target with three conditions
Articles/Workspace
◧ Workspace/2026-08-26Advanced

Sheets canvas Takes the Entry Point, Not the Execution Boundary

With Sheets canvas available, how much of your hand-built Apps Script can you actually retire? Sorting the answer by execution boundary, with the decision rules and a classifier script that does the inventory for you.

Google Sheets7Apps Script12Gemini89Workspace5Automation14

✦ Premium Article

As an indie developer I have been pulling store-related work into spreadsheets for a while now. Localized descriptions, review submission history, staged rollout progress. A table is the fastest container for all of it. What actually took time, though, was never building the table.

The friction always sat somewhere else: whose permissions it runs under, what starts it, and how many times it is allowed to run.

A sheet only you open needs one function. But once you want it to fire on a schedule, and the external API you call has a daily cap, and a mid-run failure must not double-process anything, the spreadsheet stops being a sufficient container. Most of the logic I pushed into Apps Script went there not because I wanted a table, but because there was nowhere else to write those execution conditions down.

On August 26, Sheets canvas gained the ability to turn a natural-language prompt into an interactive, readable and writable application. Handing out a spreadsheet as a small business app with an input form is a familiar need, and Gemini now reaches into it directly.

My first question was whether I could retire the Apps Script I had written. The short answer: you can retire the entry point, and only the entry point. The line is drawn by execution boundary, not by feature count.

What August 26 Actually Added

What canvas gives you is a way to convert sheet contents into an interactive read-write surface. Creation and editing are subject to a per-user usage limit.

The easy thing to miss is that the new capability covers how you build, not how the thing runs.

DimensionSheets canvasApps Script
Build effortAssembled from a promptYou write the code
What starts itA person opening itTriggers and external calls too
State across runsNot assumedHeld in PropertiesService and friends
Permission surfaceThe sheet's own contextWhatever the manifest declares
Volume constraintsPer-user usage limitPer-script quotas

Everything below the first row is what I have started calling the execution boundary. canvas shortens the first row only.

The Execution Boundary as a Yardstick

The execution boundary is the part of a piece of logic that fixes four things: whose permissions it runs under, what triggers it, how many times it may run, and what happens when it dies partway through. It is my own shorthand, but lining up those four separates movable work from immovable work cleanly.

A function that reads numbers from a sheet, formats them, and writes them back to another column has almost no execution boundary. It runs when someone presses a button, a failure just means pressing again, and it consumes no shared external quota. That kind of work can move to canvas.

Compare that with a job that wakes at 1 a.m., walks unprocessed rows, posts each to an external endpoint, and resumes from where it stopped last time. That is thick with boundary: a time-driven trigger owns the start, the daily UrlFetch quota is shared, and the resume cursor survives across executions. None of those three have anywhere to live inside an interactive app.

The automations that gave me trouble in the past were always on that side of the line. Burning the daily UrlFetch quota before month-end is covered in budgeting against the UrlFetch daily quota, and time-driven triggers quietly running out is covered in consolidating triggers into one dispatcher. Neither has anything to do with how the table is built.

✦

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
✦You can sort your existing Apps Script assets into move, split, and keep using a single yardstick instead of case-by-case guesswork
✦You can catch the permission and trigger surprises before migrating, rather than after someone else opens the sheet
✦You can hand the migration decision to a classifier script and keep the result, so the same question never costs you a second afternoon
Secure payment via Stripe · Cancel anytime
✦

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Gemini Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $15 for lifetime access
View Membership →

Related Articles

◧ Workspace2026-10-03
Estimating a Sheets-Driven Gemini Bill Across the Year-End Price Switch with Apps Script
If you call the Gemini API from a spreadsheet, log the token counts per call and estimate the month in two columns: the intro price that ends on December 31, 2026 and the standard price from January 1, 2027. Apps Script, with real output.
◧ Workspace2026-09-01
When a New Gemini Feature Hasn't Reached Your Workspace, Here's How to Tell Waiting From Broken
A step-by-step way to decide whether a missing Gemini feature in Google Workspace is still rolling out or actually misconfigured, using release tracks and rollout pace, plus a small Apps Script ledger that does the counting for you.
◧ Workspace2026-08-27
Meet Notes Now Covers In-Person Meetings. Decide Where They Land in Drive First
Google Meet note-taking can now start from the home screen and covers in-person meetings. Here is how to set up a single Drive intake folder before the docs scatter, and pull only the decisions into a ledger with Apps Script.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links