Skip to content

Chrome extension for the Apps Script editor

A real language server for Apps Script. Useful fixes you choose.

myFunction adds two things to the editor you already use: a language server that understands your code and the Google services it calls, and a review-first assistant that proposes complete project changes and writes nothing until you approve.

01 — Language server

A diagnostic, then a fix you apply.

Reading a Spreadsheet range inside a loop costs one service call per iteration. The language server flags it and offers a supported code action: read the range once with getValues(), then index the resulting array.

Quick fixes update the current editor model. Saving, running, testing, and deploying stay where they always were—with you.

Code.gs 1 diagnostic
12 function tagStaleOrders() {
13 const sheet = SpreadsheetApp.getActiveSheet();
14 const range = sheet.getRange(2, 4, 100, 1);
15 for (let row = 1; row <= 100; row++) {
16 const status = range.getCell(row, 1).getValue();
17 if (status === "pending") flag(row + 1);
18 }
19 }
Line 16

Spreadsheet range read inside a loop: one API round trip per iteration.

Inside the editor

The IDE layer Apps Script leaves out.

Completions

Members, parameters, and enum values across Apps Script services, ranked in context.

Diagnostics

Type errors, API misuse, and supported performance problems as you type.

Hover documentation

Signatures, parameter types, return types, and service documentation at the cursor.

Signature help

Overloads and argument positions while you write a call.

Go to definition

Move from a call to its definition across the files in the open project.

Quick fixes

Targeted editor code actions for supported diagnostics. You apply or dismiss them.

Types for SpreadsheetApp, GmailApp, CalendarApp, and the other Apps Script services are generated from a runtime introspection dump plus a curated signature corpus—not maintained as simplified handwritten stubs.

02 — Review-first assistant

A proposal, not a surprise.

For larger changes, the assistant reads the saved project through the official Apps Script API and returns one complete, reviewable proposal. Every project write remains yours.

Before applying, myFunction fetches the project again. If the saved state changed, the write is refused rather than merged over newer work.

Request Awaiting your review

“Move the order-sync retry logic out of Code.gs into its own file and use it from both entry points.”

Proposal — 2 files Code.gs, Retry.gs · +14 −9
Retry.gs — new file
+ function withRetry(fn, attempts) {
+ for (let i = 0; i < attempts; i++) {
+ try { return fn(); }
+ catch (error) { Utilities.sleep(500 * (i + 1)); }
+ }
+ }
Code.gs
for (let i = 0; i < 3; i++) { try { push(order); break; } }
+ withRetry(() => push(order), 3);
Created against saved state 8f21c04 Project now at 8f21c04

Leave unapproved and nothing is written.

Review and approval

Larger changes, treated like pull requests.

Apps Script projects run against live spreadsheets, mailboxes, and calendars. Project writes are visible in full, applied only on approval, and refused when the base has moved.

  1. 01

    Request

    Describe a project change: a refactor, an extraction, or a new entry point.

  2. 02

    Complete proposal

    The assistant reads the saved project through the official Apps Script API and returns complete target files.

  3. 03

    Review the diff

    Inspect the complete project diff, affected files, and the project state used as its base.

  4. 04

    Approve or leave unapproved

    On approval, myFunction re-fetches the project and writes only when the base still matches. Without approval, nothing is written.

Inspect before approving

  • Every affected file
  • The complete project diff
  • The resulting file count
  • The exact saved state used as the base

Deliberate limits

What myFunction cannot do.

NOExecute Apps Script functions
myFunction never runs your script. Running stays in the editor, in your hands.
NORun tests for you
It can propose test code. Deciding to run it and reading the result remain yours.
NOCreate versions or deployments
Versions and deployments are untouched. Published behavior changes only when you change it.
NOAccess a shell
The assistant has no terminal and no command-execution tool.
NOBrowse your filesystem
The extension works with the Apps Script project you have open, not your development machine.
NOApply a proposal silently
Every project write follows a proposal you explicitly approve. There is no auto-apply mode.
NOWrite over a newer project
If the saved project has moved, the proposal is refused rather than merged over newer work.

Install for Chrome

Real tooling for Apps Script. Every write still yours.

Public store links will appear here with the first public build. The language server attaches when you open a project at script.google.com; assistant access is requested separately when you use it.

Preview the language server
myFunction
GitHub myfunction.dev

Built for Google Apps Script. Not affiliated with or endorsed by Google.