Collection of Google Apps Scripts with TypeScript support and GitHub Codespaces integration.
- 🚀 TypeScript support for type-safe development
- 📦 Clasp for command-line Apps Script management
- 🎨 ESLint and Prettier for code quality and formatting
- 🔧 GitHub Codespaces ready with pre-configured development environment
- 📝 VS Code extensions for enhanced developer experience
- Node.js 20 or higher
- pnpm (v11 or higher)
- Google account with access to Google Apps Script
- (Optional) GitHub Codespaces for cloud-based development
pnpm installpnpm clasp loginThis will open a browser window for Google authentication.
You have two options:
Option A: Create a new standalone script
pnpm clasp create --title "My Script" --type standaloneOption B: Link to an existing script
- Copy
.clasp.json.templateto.clasp.jsoninside your project directory (e.g.projects/google-docs-toolkit/.clasp.json) - Add your script ID from the Google Apps Script editor (Project Settings → Script ID)
pnpm build
pnpm push| Command | Description |
|---|---|
pnpm build |
Build all workspace projects and tools via Turbo |
pnpm build:projects |
Build all Apps Script projects in projects/* |
pnpm push |
Push local compiled code to Google Apps Script |
pnpm pull |
Pull code from Google Apps Script to local |
pnpm deploy |
Deploy Apps Script projects |
pnpm typecheck |
Run TypeScript type checks across all projects |
pnpm lint |
Check code for linting errors |
pnpm lint:fix |
Automatically fix linting errors |
pnpm format |
Format code with Prettier |
pnpm format:check |
Check if code is formatted correctly |
-
Edit code in a project's
src/directory (e.g.projects/google-docs-toolkit/src/) -
Format and lint your code:
pnpm format pnpm lint
-
Build and push to Google Apps Script:
pnpm build pnpm push
-
Test your script in the Apps Script editor or bound spreadsheet/document
This repository is configured for GitHub Codespaces. Click the "Code" button and select "Create codespace on main" to start developing in the cloud with all dependencies pre-installed.
The Codespace includes:
- Node.js 20 & pnpm
- VS Code extensions for TypeScript, ESLint, and Prettier
- Pre-configured formatting, linting, and build tooling
.
├── .devcontainer/ # GitHub Codespaces configuration
├── packages/ # Shared workspace packages
│ ├── fitness-models/ # Fitness & workout data models
│ └── sheets-utility/ # Node.js utility for Google Sheets API
├── projects/ # Individual Apps Script projects
│ ├── google-docs-toolkit/ # Google Docs document & formatting utilities
│ └── templatization-lor/ # Recommendation letter generator
├── tools/ # Workspace development & build tools
│ ├── build-utils/ # Vite & Apps Script build helpers
│ ├── dev-utils/ # Utility scripts for dev environment
│ ├── doc-utility/ # Documentation generators
│ ├── eslint/ # Shared ESLint configuration
│ ├── submodule-converter/ # CLI tool for submodule management
│ ├── tsconfig/ # Shared TypeScript configurations
│ └── vite-plugins/ # Vite plugins for Apps Script output
├── scripts/ # Automation scripts
├── eslint.config.ts # ESLint flat config
├── .prettierrc.json # Prettier configuration
├── tsconfig.json # Root TypeScript configuration
├── package.json # Monorepo root configuration
└── README.md # This file
For running spreadsheet operations outside the Google Apps Script runtime, we provide a Node.js utility in packages/sheets-utility that uses the Google Sheets API directly.
Quick Start:
cd packages/sheets-utility
pnpm install
pnpm run auth
pnpm run example:listSee packages/sheets-utility/README.md for full documentation.
- TypeScript compilation: Clasp automatically transpiles TypeScript to JavaScript when pushing
- Auto-formatting: Enable "Format on Save" in VS Code for automatic code formatting
- Watch mode: Use
clasp push --watchto automatically push changes on file save - Logs: Use
npm run logsto view execution logs and debug issues
Apache 2.0 - See LICENSE file in repository root. Copyright 2026 John Mitchell-Grant; all rights reserved except as expressly granted under the license.