Free Chrome extension

Apps Script,
without the friction.

AI suggestions. Real errors. GitHub sync. Folders. 50+ themes.

Everything you wished the Apps Script editor had — code suggestions while you type (cloud or local), errors highlighted before you save, push and pull from GitHub, organize your project in folders, and a theme for every mood.

Add to Chrome — Free See what it does
Code.gs
helpers.gs
index.html
JS · 48 lines
1
2
3
4
5
6
7
8
9
10
11
12
// Send a weekly email report to every recipient in the sheet
function sendWeeklyReport() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const data = sheet.getDataRange().getValues();
  const subject = "Weekly Report — " + new Date().toDateString();
  
  for (let i = 1; i < data.length; i++) {
    const email = data[i][0];
    if (email = "") continue;⚠ Looks like a typo — did you mean === ?
    MailApp.sendEmail(email, subject, body);
  }
}
AI
AI Chat · Claude Sonnet
Found a bug on line 9: email = "" assigns instead of comparing. Replace with email === "". Heads up: body isn't defined yet either.
Fix at cursor Copy fix
51
Editor themes
9
AI providers
$0
Always free
1-click
to install
// What you get

Everything Apps Script
has been missing.

Eight tools designed to save you time every day, working together inside the editor you already use.

AI suggestions

It writes with you ⚗️ Experimental

Suggestions appear as gray text while you type. Press Tab to accept. Write a comment with what you need and the AI completes the function for you.

  • Suggests the next few lines, not just one word
  • Understands what you wrote before and after
  • Works in .gs, .html, .json and .css files
AI chat

Ask questions, get code ⚗️ Experimental

A chat panel right inside the editor. Send the selected text, the open file, or the whole project as context, and get answers you can paste with one click.

OpenAI Claude Gemini OpenRouter Kimi Nvidia ChatLLM Local (LM Studio / Ollama)
Live errors

See bugs before saving

Mistakes appear next to the line as you type — no need to save first or run anything. A red dot in the toolbar tells you when the file has issues.

  • Unclosed quotes, brackets and parentheses
  • Typos like = instead of ===
  • Reassigning a constant by accident
  • Dead code after a return or throw
Search

Find anything, anywhere

Press Ctrl+F and the native find widget gets a richer toolbar that knows about every file in the project. Hop between files with the keyboard, jump straight to any match, no extra panel.

  • Cross-file navigation built into the native find widget
  • File picker popover with match counts and live filter
  • Per-file match list to jump directly to any line
  • Case-sensitive, whole word and regex toggles still work
Folders

Organize your project

Group files into folders by typing slashes in the name (e.g. utils/email.gs). The sidebar turns into a real tree, with collapsible folders and color icons by file type.

  • Collapsible folders, like in VS Code
  • Different color per file type
  • Customize colors from the popup
Snippets

Reusable code blocks

Type a short prefix and the full block appears. Comes with classics for Apps Script and HTML, plus a built-in editor to save your own.

  • Built-in catalog ready to use
  • Create, edit and delete your own
  • Triggered by prefix in the autocomplete
GitHub sync

Push and pull, no terminal

Connect once and the editor gets a sync panel. Pick which files to push, see the diff, pull updates with one click.

  • Visual diff per file with line-by-line changes
  • Resumable transfers — retries reuse what already finished
  • Tokens stay in your browser
Themes

51 themes, fully editable

Classics from the VS Code world plus colorful options for every taste. Apply with one click, duplicate to tweak, or build your own from scratch.

  • Dracula, Monokai, Night Owl, Solarized…
  • Visual editor for every color token
  • Export and import themes as JSON
// Editor panels

The buttons in your toolbar.
What each one really does.

When the extension is on, the Apps Script toolbar gets six new buttons. This is what hides behind each.

📄 Active file ⚗️ Experimental

A button that always shows the active file's name — even when the Apps Script tree highlight doesn't reflect it.

  • Full file name with virtual folder
  • Detected language and file size
  • Live counts of errors, warnings and hints
  • Click any error count to jump to the line

🔎 Multi-file search

Open Monaco's native find widget with Ctrl+F. The toolbar below the inputs tells you which file you're on and how many files have matches.

  • Native find widget extended, no extra panel
  • Active file name and position across the project
  • Click the file name to pick from a popover with filter and match counts
  • List icon to jump directly to any match in the current file
  • Ctrl+Alt+F / Ctrl+Shift+F to hop between files

🤖 AI chat ⚗️ Experimental

Talk to the AI, send context, paste answers with one click. Open with Alt+Shift+C.

  • Chat history kept inside the panel for the session
  • Switch provider on the fly
  • @selection, @file, @project commands
  • Code blocks: copy / insert / replace selection
  • Settings, key, model and AI context inline

🐙 GitHub sync

Push and pull from any repo without a terminal. Diff per file, file-by-file selection, resumable transfers.

  • Repo and branch selectors with search and create
  • Subfolder mapping if you don't push to root
  • Live progress with a numbered list of files
  • Retries reuse what was already uploaded or merged
  • Cannot close the panel mid-sync (avoids broken state)

⚡ Project actions

Small tools that save clicks during your day-to-day with Apps Script.

  • Download the entire project as a ZIP
  • Open the project in another tab
  • Refresh the file tree
  • Jump to project settings

🚦 Live errors

Errors and warnings shown inline at the offending line as you type. No save, no run.

  • Unclosed parentheses / braces / brackets
  • Unterminated strings
  • == / != (suggests === / !==)
  • Reassigning a const
  • Dead code after return / throw
  • Comparing with NaN instead of Number.isNaN()

Push and pull without leaving Apps Script.

Connect your GitHub account once and the editor gets a sync panel. Sign in with Google to read and write your project files via the Apps Script API, then sign in with GitHub via Device Flow. Pick a repo and a branch and you are ready.

  • Visual diff per file with line-by-line changes
  • Pick exactly which files to push, file by file
  • Pull creates new files automatically — no manual steps
  • Live progress: each file checked off in real time
  • Resumable transfers if the network or rate limit hits
  • Your GitHub token stays in your browser
GitHub sync · main branch
~
Code.gs
+12 -3
~
utils/email.gs
+4 -1
+
Sidebar.html
new file
3 of 3 selected · "Add weekly report"
Push to GitHub

A real file tree, like a real IDE.

Apps Script lists files flat. We turn that flat list into folders by reading the slashes in the file name, with collapsible groups and a color-coded icon per file type.

  • Name a file utils/email.gs and it nests automatically
  • Collapse groups you don't need to focus on the rest
  • Files keep working exactly the same in Apps Script
  • Pick your own colors for .gs, .html and .json
Files
▾ 📁 utils
📄 email.gs
📄 sheets.gs
📄 dates.gs
▾ 📁 ui
📄 sidebar.html
📄 dialog.html
📄 Code.gs
📄 appsscript.json
// Settings

Every setting,
explained one by one.

Click the extension icon in Chrome to open the popup. Five tabs: Options, Snippets, Themes, AI and About. Changes apply live.

Extension Master toggles

OptionWhat it doesDefault
Enable extensionMaster switch. Pauses every feature without uninstalling.On
AI AutocompleteInline ghost-text suggestions while you type. Press Tab to accept.Off
Custom foldersTreats / in file names as folders in the file tree.On
Folder colorColor used for folder icons in the file tree.Neutral grey
.gs file colorColor of the icon for Apps Script files.Google blue
.html file colorColor of the icon for HTML files.Google red
.json file colorColor of the icon for JSON files.Google green
Error lensShows inline diagnostics at the offending line.On

Font Typography

OptionWhat it doesDefault
Font familyPick the editor monospace font: JetBrains Mono, Fira Code, Roboto Mono, Source Code Pro, Geist Mono, IBM Plex Mono and more.Roboto Mono
Font sizeEditor font size in pixels (10–48).13
Line heightVertical line spacing in pixels (12–48).19

Visuals Layout & rendering

OptionWhat it doesDefault
IDE Dark ModeApplies a dark theme to the entire Apps Script interface.Off
Show minimapHigh-level code overview on the right side.On
Line numbersLine numbers on the left margin.On
Word wrapWrap long lines so they fit within the editor width.Off
Line highlightHighlights the line where the cursor is.On
RulersVertical rulers at column 80 and 120.Off
Occurrences highlightHighlights every occurrence of the word under the cursor.On
Show whitespaceRenders spaces, tabs and other invisible characters.Off

Code Assistance Helpers while you type

OptionWhat it doesDefault
Bracket pair colorizationPaints matching brackets with unique colors.On
Quick suggestionsEditor's autocomplete list while typing.On
Auto closing bracketsCloses brackets, quotes and tags as you type.On
Indentation guidesVertical lines at each indentation level.On

Behavior Navigation & cursor

OptionWhat it doesDefault
Code foldingGutter to collapse code blocks (functions, objects, regions).On
Smooth scrollingAnimates scroll motion for a more fluid feel.On
Scroll beyond last lineLets you scroll past the final line.Off
Tab sizeIndentation width: 2, 4, 6 or 8.2
Cursor styleLine, Block, Underline + thin variants.Line
Cursor blinkingBlink, Smooth, Phase, Expand or Solid.Blink
// Snippets

Type a prefix.
Get the whole block.

A built-in catalog of useful snippets for JavaScript and HTML / GAS, plus a visual editor to add your own. Triggered by their prefix in Monaco's autocomplete.

JavaScript Built-in catalog

PrefixWhat it inserts
clogconsole.log(variable)
logLogger.log(message) — Apps Script logger
gssGet active spreadsheet and a sheet by name
getvalGet values from a range (A2:C)
alertSpreadsheetApp.getUi().alert(…)
forClassic for loop with i++
forofModern for…of loop
fearray.forEach(item => { … })
ifeif…else block
trytry…catch with Logger.log on error
maparray.map(item => …)
filterarray.filter(item => …)
docJSDoc comment block with @param and @return
todo// TODO: … with current date

HTML / GAS Built-in catalog

PrefixWhat it inserts
htmlgasBoilerplate index.html for HtmlService, with normalize.css
fieldInput wrapped in a label with a placeholder
btnStyled button with id and class
selectSelect dropdown with two options
divc<div class="container"> block
tableTable with <thead> and <tbody> and two columns
incjs<?!= include("JavaScript"); ?> for HtmlService
incss<?!= include("Stylesheet"); ?> for HtmlService
loaderLoading spinner skeleton

Snippets support placeholders (${1:name}) and tab navigation. Type a prefix, press Tab, fill the first slot, press Tab again to jump to the next.

// AI

Use your own AI account.
Cloud or local.

Choose any provider you already have a key for, or run a model on your own machine. Your key never leaves your browser — requests go from your machine straight to the provider.

⚗️ Heads-up: AI features (chat, autocomplete and the active-file panel) are experimental. They work well in most cases but may behave inconsistently with very large projects, unusual file structures or specific provider models. Disable them from the popup if you hit issues, and feel free to share feedback at rubencho.dev@gmail.com.
Cloud providers

Bring your own key

  • OpenAI — platform.openai.com
  • Anthropic — console.anthropic.com
  • Google Gemini — aistudio.google.com
  • Kimi (Moonshot) — platform.moonshot.cn
  • Nvidia Build — build.nvidia.com
  • ChatLLM — apps.abacus.ai
  • OpenRouter — openrouter.ai
Local models

Run it on your laptop

Pick Custom as provider and point it to your local server. Works with any OpenAI-compatible endpoint.

  • LM Studio — port 1234
  • Ollama — port 11434
  • API key field can stay empty
  • Nothing leaves your machine
AI Context

Project conventions

A small free-text block sent with every request. Use it for project-wide rules: style, formats, libraries to avoid.

  • Adds context the AI keeps in mind
  • Two ready-to-use examples below
  • Edit it from the popup or from the chat panel

Local Recommended models for Apps Script / JS / HTML / CSS

The author's pick: qwen2.5-coder-3b-instruct. Fast even on regular laptops, understands .gs, .html, .css and .json well. Five solid options below, ordered from lightest to most capable.

ModelSizeStrengthsOllama tag
~3 B Very fast, great quality for its size, strong on JS / HTML / CSS / SQL. qwen2.5-coder:3b-instruct
Stable Code 3B Instruct ~3 B Tuned for code completion. Excellent latency for inline ghost-text. stable-code:3b-instruct
Qwen2.5 Coder 7B Instruct ~7 B Bigger steps, longer responses, better on tricky refactors. qwen2.5-coder:7b-instruct
Llama 3.1 8B Instruct ~8 B Strong general-purpose model that also handles JS / HTML well. Use it for chat and explanations. llama3.1:8b-instruct

How to pick: 8 GB RAM and want speed → 3 B models. 16 GB and want better answers → 7 B / 8 B.

LM Studio Step-by-step

01

Install LM Studio

Download lmstudio.ai and run the installer.

02

Download a model

Discover tab → search Qwen2.5 Coder 3B Instruct → download.

03

Start the server

Developer tab → Start Server. Default port 1234.

04

Connect

Provider Custom, URL http://localhost:1234/v1/chat/completions, API key empty.

Ollama Step-by-step

01

Install Ollama

Download from ollama.com and run the installer.

02

Pull a model

ollama pull qwen2.5-coder:3b-instruct from a terminal.

03

Service running

Auto-starts on Windows / macOS. On Linux: ollama serve. Default port 11434.

04

Connect

Provider Custom, URL http://localhost:11434/v1/chat/completions, API key empty.

AI Context Two prompts that work

Keep your AI Context short and specific. These two examples work well in real Apps Script projects — copy, adapt and paste.

This project is a Google Apps Script web app for {YOUR USE CASE}. - Use modern JavaScript (let / const, arrow functions, async / await). - Prefer Logger.log over console.log for runtime traces. - Wrap risky calls in try / catch and log errors with the function name. - Date format: dd/MM/yyyy. Currency format: 1,234.56 (en-US). - Keep functions under 40 lines. Comment intent, not syntax.
You are pair-programming on Apps Script HTML Service. - Use <?!= include('Name'); ?> to embed templates. - Avoid inline event handlers; bind events with addEventListener. - For Spreadsheet calls, batch reads / writes (getValues / setValues). - Don't suggest libraries that need npm; only what runs natively in GAS.
Tab Accept the current AI suggestion
Ctrl+F Open the native find widget (extended with cross-file navigation)
Ctrl+Alt+F Jump to the next file with matches
Ctrl+Shift+F Jump to the previous file with matches
Alt+Shift+C Open the AI chat panel
Esc Close the active panel

51 themes. Make it yours.

Classics from the VS Code world plus colorful options for every taste. Apply with one click, duplicate to tweak the colors, or build your own from scratch.

Active4D
All Hallows Eve
Amy
Birds of Paradise
Blackboard
Brilliance Black
Brilliance Dull
Chrome DevTools
Clouds
Clouds Midnight
Cobalt
Dawn
Dominion Day
Dracula
Dreamweaver
Eiffel
Espresso Libre
GitHub
IDLE
idleFingers
iPlastic
Katzenmilch
Kiro dark
Kiro light
krTheme
Kuroir
LAZY
MagicWB (Amiga)
Merbivore
Merbivore Soft
monoindustrial
Monokai
Monokai Bright
Night Owl
Oceanic Next
Pastels on Dark
Slush and Poppies
Solarized Dark
Solarized Light
SpaceCadet
Sunburst
Textmate (Mac Classic)
Tomorrow
Tomorrow Night
Tomorrow Night Blue
Tomorrow Night Bright
Tomorrow Night Eighties
Twilight
Upstream Sunburst
Vibrant Ink
Xcode
Zenburnesque

Don't like a color? Duplicate any theme and change anything you want — keywords, comments, background, every detail. Themes courtesy of JeanRemiDelteil / appsScriptColor.

Your code stays where it was.

The extension does not have a server. There is no account to create. Your code, your AI keys and your GitHub token live on your machine.

  • No analytics, no tracking, no telemetry
  • AI requests go from your browser straight to the provider
  • GitHub sync goes from your browser straight to GitHub
  • Settings stored in Chrome — sync with your Google account if you want
  • Open source under the MIT license
  • Complies with Google's Limited Use requirements

Read the privacy policy

What we collect
Nothing.
What stays in your browser
• Your AI provider keys
• Your GitHub token
• Your editor preferences
• Your custom themes and snippets
// Common questions

Quick answers.

If something else comes up, the GitHub repo has a public issue tracker.

Is it really free?

Yes. The extension is free, open source under MIT. The only thing that costs money is the AI itself: you bring your own provider key (OpenAI, Claude, Gemini, etc.) and pay them directly for the usage. We never charge a cent. If you don't want to pay anything, run a local model with LM Studio or Ollama.

Do I need to know how to code?

You should be familiar with Apps Script. The extension makes things faster and more pleasant for people already writing scripts. It's not a no-code tool, but the AI chat helps a lot when you're stuck.

Does it slow down the editor?

No. The extension only activates inside the Apps Script editor and runs only the features you turn on. There's a master switch to pause everything if you ever need to.

Will my code be sent to a server you control?

Never. AI requests go from your browser straight to the provider you chose. GitHub sync goes from your browser straight to GitHub. Apps Script sync goes from your browser straight to Google's API. We don't have a server in the middle.

How does the local model option work?

Pick Custom as the provider in the popup AI tab. Paste the URL of your local server (LM Studio: http://localhost:1234/v1/chat/completions, Ollama: http://localhost:11434/v1/chat/completions). Put the exact model name in the model field and leave the API key empty. From then on every request goes only to localhost.

Can I use it on a corporate Google account?

Yes, as long as your organization allows installing extensions from the Chrome Web Store. Some admins block extensions by policy — in that case ask IT to allow this one.

Does it work outside Chrome?

Today only on Chromium-based browsers (Chrome, Edge, Brave). The Apps Script editor itself runs there, so we focus on that environment.

What happens if a push or pull is interrupted?

The panel keeps track of the files that already finished. When you retry, those files are reused without re-uploading or re-downloading, so you don't waste time or hit GitHub's rate limits twice.

How do I create my own snippet or theme?

Open the popup, go to Snippets or Themes, click the + button. You'll get a visual editor with a preview while you type. Save and the new item appears in the editor immediately.

// Credits

Standing on great work.

A few of these features were sparked by other projects. Their ideas helped shape what's here.

Folders & themes

JeanRemiDelteil / appsScriptColor

The approach for the editor's file tree (parsing slashes into a real folder hierarchy) and the catalog of color themes both come from this extension.

View on GitHub

Error Lens

usernamehw / vscode-error-lens

The idea of showing diagnostics inline at the end of the line, with severity colors and counts, is inspired by this VS Code extension.

View on GitHub

GitHub sync

leonhartX / gas-github

The approach for reading and writing the project content from outside the editor via the Apps Script API was inspired by this project.

View on GitHub

Native search

Black edition for google apps script ide

Extending Monaco's native find widget with cross-file navigation (instead of opening a separate search panel) is based on this extension.

Visit project

Available now on Chrome Web Store

Try it for a week.
You won't go back.

Free. No account. No credit card. Install in one click.

Add to Chrome — It's Free