Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Google Apps Script SyncNew to Visual Studio Code? Get it now.
Google Apps Script Sync

Google Apps Script Sync

Google Apps Script Connector

|
6 installs
| (0) | Free
| Sponsor
Local synchronization for Google Apps Script projects — push, pull, and manage your GAS code directly from VS Code with smart change detection and IntelliSense
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Google Apps Script Sync

Version VS Code License

Edit your Google Apps Script projects from VS Code without leaving your editor.

Connect VS Code to your cloud scripts and write code with all the tools you already love (autocomplete, search, multi-cursor, your favorite themes), then send changes back to Google when you're ready. No more copy-pasting code between the browser and your editor.

How it works

Features

Authentication

  • Sign in with your Google account via OAuth2.
  • Tokens refresh automatically; no need to re-authenticate unless you sign out.
  • Credentials are stored securely in VS Code and survive editor restarts.
  • Optionally use your own OAuth client_id and client_secret via settings.

Project connection

  • Connect any local folder to a Google Apps Script project using its Script ID.
  • On connect, the script is automatically downloaded to your folder.
  • Option to clone into a specific subfolder instead of the workspace root.
  • Disconnect anytime: your local files stay, only the link is removed.

Sync (Push / Pull)

  • Push: upload your local changes to your Google Apps Script project.
  • Pull: download the latest remote version to your computer.
  • Selective sync: choose which files to include or exclude before applying.
  • Push and Pull buttons always visible; they enable/disable automatically based on detected changes.

Change preview (Diff)

  • Before every Push or Pull, a preview opens showing all changes grouped by type:
    • 🟢 Added — new files that don't exist on the other side.
    • 🟠 Modified — files that exist on both sides but with different content.
    • 🔴 Deleted — files that will be removed.
  • Each file has a checkbox; you can check/uncheck individual files or entire groups.
  • Each file has a </> button that opens the native VS Code diff editor to see exactly what changed, line by line.
  • When there are large changes (20+) or deletions (5+), a warning banner is shown before applying.

Smart change detection

  • After each successful Push or Pull, a snapshot (qc_sync_state.json) is saved with SHA-256 hashes of all files.
  • Instead of comparing local vs remote (which always shows both sides as changed), the system compares each side against the snapshot to determine which side actually changed since the last sync.
  • If no snapshot exists (first time), it falls back to a direct local-vs-remote comparison.

IntelliSense autocomplete

  • As soon as you connect a project, the @types/google-apps-script package is installed automatically, giving you full autocomplete for all Apps Script services (SpreadsheetApp, DriveApp, Logger, etc.).
  • Opening any .gs file ensures the types are installed.
  • Technical files (node_modules/, package.json, qc_sync_state.json, etc.) are automatically hidden from the VS Code explorer and search.

Side panel

The panel in the activity bar puts everything in one place:

Section Content
Account Shows your sign-in status and email. Button to sign in/out.
Connect Appears only when signed in but no script is linked. Input field for the Script ID.
Project Appears once connected: Script ID (clickable → opens in browser), last sync time, and action buttons: Push, Pull, Info (project stats), and Disconnect.
Refresh Button to check for pending changes, with a loading spinner.
  • Toast notifications at the bottom of the panel show sync results.
  • When there are no changes, an "Up to date" toast appears and auto-dismisses after 3 seconds.

Language switcher

  • Language picker in the top-right corner of the panel.
  • Switch between English and Español instantly.
  • The selection persists when closing and reopening VS Code.

Command palette

All commands are also available via Ctrl+Shift+P:

Command Action
Google Apps Script Sync: Sign in with Google Sign in
Google Apps Script Sync: Sign out Sign out
Google Apps Script Sync: Connect project (by ID) Connect a project
Google Apps Script Sync: Push project Upload changes
Google Apps Script Sync: Pull project Download changes
Google Apps Script Sync: Show sync status View sync status

Settings

Available in settings.json under google-apps-script-sync.*:

Property Type Default Description
language "en" / "es" "en" UI language
retryAttempts number 3 API retry attempts on failure
clientId string — Custom OAuth client ID
clientSecret string — Custom OAuth client secret

Auto-detect on save

When you save a local file (.gs, .html, appsscript.json), a change check is automatically triggered with a 500ms debounce to avoid excessive calls.

Getting started

  1. Install the extension and reload VS Code.
  2. Click the cloud sync icon in the activity bar (left side) to open the panel.
  3. Press Connect and sign in with your Google account in the browser tab that opens.
  4. Open the folder where you want to keep your script files.
  5. In the panel, paste your Script ID and press Connect. The script is downloaded to your folder.
  6. From now on you can:
    • Press Pull to download the latest version.
    • Press Push to upload your changes.
    • Use Info to see file stats and last sync time.

Where do I find my Script ID? Open your script at script.google.com, go to File → Project settings, and copy the value labeled "Script ID".

FAQ

Does it sync automatically when I save? No. Every Push and Pull is intentionally manual, with a preview to review. The auto-detect only updates the Push/Pull button states so you know if changes are pending.

Will it overwrite my work without warning? No. The preview always shows what will change before anything happens, and you can deselect individual files or entire categories.

Where are my files stored? In the folder you chose when connecting. The extension only adds two small files:

  • qc_config.json — script ID, name, and timestamp.
  • qc_sync_state.json — SHA-256 hashes for smart change detection.

What file types are synced? The same ones Apps Script supports: .gs (server JavaScript), .html, and the appsscript.json manifest.

I see a "403 Forbidden" error. Apps Script needs an extra permission enabled in your Google account. Visit script.google.com/home/usersettings and enable the Google Apps Script API.

Can I disconnect a project? Yes — press Disc in the panel. Your local files stay untouched; only the connection is removed.

How do I know what changed without comparing to the server? The extension saves a SHA-256 snapshot after each sync. Instead of comparing local vs remote (expensive), it compares each side against the snapshot to instantly determine what changed.

Does disconnecting require confirmation? Yes, a confirmation dialog appears before disconnecting. Your local files are never deleted.

What if the Google API fails? The extension retries the operation up to 3 times (configurable) with progressive delays. Common errors (403, 404, 401) are translated into clear messages with instructions to resolve them.

Support

Found a bug or have a suggestion?

  • ✉️ rubencho.dev@gmail.com
  • 🌐 qualitycode.dev

Made with ☁️ for the Apps Script community.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft