| Google Apps Script IntelliSenseZero-config IntelliSense, autocompletion, and snippets for Google Apps Script development in VS Code. 
 📖 Language / Idioma: English | Español Features🎯 Automatic IntelliSense for GAS APIsGet instant autocompletion for all Google Apps Script services without any configuration: 
 Simply open a  📝 Code SnippetsSpeed up development with 28 ready-to-use code snippets for common GAS patterns: Triggers & Entry Points
 Spreadsheet Operations
 Email Operations
 Logging & Debugging
 ✨ Enhanced Editing Features
 Installation
 Or install from the command line: Quick Start1. Open a  | 
| Feature | This Extension | labnol/google-apps-script | Manual clasp setup | 
|---|---|---|---|
| Zero-config IntelliSense | ✅ | ❌ | ❌ | 
| GAS-specific snippets | ✅ | ❌ | ❌ | 
| Works offline | ✅ | ✅ | ✅ | 
| Requires npm/clasp | ❌ | ❌ | ✅ | 
| Setup time | 0 min | 0 min | 15+ min | 
Limitations
This extension focuses solely on IntelliSense and code editing. It does not:
- ❌ Sync code with Google Apps Script (use clasp for this)
- ❌ Execute or deploy scripts (use clasp or the web editor)
- ❌ Create new GAS projects (use clasp)
This is by design - the extension does one thing well: improve your coding experience.
Troubleshooting
Didn't see the setup prompt?
If you missed the initial setup prompt or clicked "No":
- Open the command palette (Ctrl+Shift+P / Cmd+Shift+P)
- Type "GAS: Setup Workspace"
- Press Enter to run the manual setup
IntelliSense not appearing?
- Make sure the file has a .gsextension
- Check if workspace setup has been completed (look for jsconfig.jsonin your workspace)
- If not set up, run "GAS: Setup Workspace" from the command palette
- Try reloading VS Code (Ctrl+Shift+P → "Developer: Reload Window")
- Check that the extension is activated (Extensions panel → GAS IntelliSense should show as active)
Snippets not working?
- Check that gasIntellisense.enableSnippetsis set totrue(default)
- Make sure you're in a JavaScript context (.gs file)
- Type the snippet prefix and press Tab or Enter
Setup prompt appearing repeatedly?
This shouldn't happen, but if it does:
- Check if jsconfig.jsonortsconfig.jsonexists in your workspace
- Try running "GAS: Setup Workspace" manually to complete setup
- If the issue persists, try reloading VS Code
Types seem outdated?
The extension uses @types/google-apps-script v2.0.7 (latest as of October 2025). Future updates will include newer versions.
Roadmap
Phase 2 (Current Release)
- [x] 23 additional code snippets (exceeds goal of 15+)
- [x] Custom hover provider with links to Google documentation
- [ ] Enhanced signature help with examples
- [ ] Extension icon and branding
Phase 3 (Future)
- [ ] More snippets for Drive, Calendar, Forms, and Documents
- [ ] Integration with clasp for push/pull
- [ ] Linter rules for common GAS mistakes
- [ ] Project templates and scaffolding
- [ ] AI-powered code generation
Contributing
Contributions are welcome! Please feel free to:
- Report bugs via GitHub Issues
- Submit feature requests
- Contribute code via Pull Requests
- Share your feedback
Related Resources
- Google Apps Script Documentation
- clasp - Command Line Apps Script Projects
- @types/google-apps-script on npm
License
MIT License - see LICENSE file for details.
Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Buy me a coffee: ☕ buymeacoffee.com/apenaravan
Acknowledgments
- Built on top of @types/google-apps-script by the DefinitelyTyped community
- Inspired by the need for better Google Apps Script development tools
Made with ❤️ by Alfonso Peñaranda van Bommel for the Google Apps Script community
If this extension helps you, please consider:
- ⭐ Starring the repository
- 📝 Leaving a review on the marketplace
- 📢 Sharing with other GAS developers
- ☕ Buying me a coffee
Google Apps Script IntelliSense
IntelliSense, autocompletado y snippets sin configuración para desarrollo de Google Apps Script en VS Code.
📖 Language / Idioma: English | Español
Características
🎯 IntelliSense Automático para APIs de GAS
Obtén autocompletado instantáneo para todos los servicios de Google Apps Script sin ninguna configuración:
- Servicios Principales: SpreadsheetApp, GmailApp, DriveApp, CalendarApp, DocumentApp, SlidesApp, FormApp
- Servicios de Utilidad: ScriptApp, PropertiesService, CacheService, UrlFetchApp, Utilities, HtmlService, Logger
- Servicios Avanzados: AdminDirectory, Classroom, Analytics, BigQuery, YouTube, y más de 30 servicios adicionales
¡Simplemente abre un archivo .gs y comienza a escribir - IntelliSense aparece instantáneamente!
📝 Snippets de Código
Acelera el desarrollo con 28 snippets listos para usar para patrones comunes de GAS:
Triggers y Puntos de Entrada
| Prefijo del Snippet | Descripción | 
|---|---|
| onOpen | Crear un trigger onOpen con menú personalizado | 
| onEdit | Crear un trigger onEdit con manejo de eventos | 
| onInstall | Código de configuración cuando se instala el complemento | 
| onSubmit | Manejar envíos de Formularios de Google | 
| doGet | Crear un manejador doGet para aplicaciones web (peticiones GET) | 
| doPost | Crear un manejador doPost para aplicaciones web (peticiones POST) | 
Operaciones de Hojas de Cálculo
| Prefijo del Snippet | Descripción | 
|---|---|
| getActiveSheet | Obtener la hoja de cálculo y hoja activa | 
| getRange | Obtener una celda o rango usando notación A1 | 
| getValues | Obtener todos los valores de un rango como array 2D | 
| setValue | Establecer el valor de una sola celda | 
| appendRow | Agregar una nueva fila al final de la hoja | 
| getDataRange | Obtener todos los datos de la hoja (detección inteligente de rango) | 
| clearRange | Limpiar el contenido de un rango de celdas | 
| insertSheet | Crear una nueva hoja en la hoja de cálculo | 
| deleteSheet | Eliminar una hoja por nombre (con verificación de seguridad) | 
Operaciones de Correo Electrónico
| Prefijo del Snippet | Descripción | 
|---|---|
| sendEmail | Enviar un correo electrónico usando MailApp | 
| sendEmailHtml | Enviar correo electrónico con formato HTML | 
| sendEmailAttach | Enviar correo con archivo adjunto desde Drive | 
| createDraft | Crear borrador de correo sin enviar | 
| getUnreadEmails | Obtener y procesar correos no leídos | 
| replyEmail | Responder a un hilo de correo | 
| markAsRead | Marcar hilos de correo como leídos | 
| addLabel | Agregar etiqueta a hilos de correo | 
| archiveThread | Archivar hilos de correo | 
Registro y Depuración
| Prefijo del Snippet | Descripción | 
|---|---|
| log | Mensaje de registro rápido para depuración | 
| logObj | Imprimir objeto de forma legible para depuración | 
| logArray | Depurar contenido de array con índices | 
| tryCatch | Manejo de errores con try-catch | 
✨ Características Mejoradas de Edición
- Documentación al Pasar el Cursor: Pasa el cursor sobre APIs de GAS (SpreadsheetApp, GmailApp, etc.) para ver:
- Descripciones de métodos y uso
- Enlaces directos a la documentación oficial de Google
- Ejemplos de código
 
- Ayuda de Firma: Ver sugerencias de parámetros mientras escribes llamadas a funciones
- Ir a Definición: Saltar a definiciones de tipos con Ctrl+Click
- Resaltado de Sintaxis: Resaltado completo de sintaxis JavaScript para archivos .gs
Instalación
- Abre VS Code
- Ve a Extensiones (Ctrl+Shift+X)
- Busca "Google Apps Script IntelliSense"
- Haz clic en Instalar
O instala desde la línea de comandos:
code --install-extension apenara.gas-intellisense
Inicio Rápido
1. Abre un archivo .gs
Crea o abre cualquier archivo de Google Apps Script (extensión .gs):
// test.gs
function myFunction() {
}
2. Comienza a escribir y ve IntelliSense
function myFunction() {
  SpreadsheetApp. // ← ¡IntelliSense aparece aquí!
}
3. Prueba un snippet
Escribe onOpen y presiona Tab:
function onOpen(e) {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
    .addItem('Menu Item', 'functionName')
    .addToUi();
}
Ejemplos de Uso
Ejemplo 1: Automatización de Hojas
function updateSheet() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  // IntelliSense te ayuda a descubrir métodos
  sheet.getRange('A1').setValue('Hola Mundo');
  // Pasa el cursor sobre métodos para ver documentación
  const data = sheet.getDataRange().getValues();
}
Ejemplo 2: Integración con Gmail
function processEmails() {
  // IntelliSense muestra todos los métodos de GmailApp
  const threads = GmailApp.search('is:unread label:inbox');
  threads.forEach(thread => {
    const messages = thread.getMessages();
    // Información completa de tipos disponible
  });
}
Ejemplo 3: Operaciones de Drive
function listFiles() {
  const folder = DriveApp.getFolderById('folder-id-here');
  const files = folder.getFiles();
  while (files.hasNext()) {
    const file = files.next();
    Logger.log(file.getName());
  }
}
Ejemplos de Snippets
Aquí hay algunos ejemplos de los snippets más utilizados. Consulta la tabla de snippets arriba para la lista completa de 28 snippets disponibles.
Triggers y Puntos de Entrada
doPost - Manejador POST de aplicación web
function doPost(e) {
  // Manejar petición POST desde formulario/webhook
  const params = e.postData.contents;
  const data = JSON.parse(params);
  // Procesar datos
  Logger.log(data);
  // Devolver respuesta
  return ContentService
    .createTextOutput(JSON.stringify({ status: 'success' }))
    .setMimeType(ContentService.MimeType.JSON);
}
onSubmit - Manejador de envío de formulario
function onFormSubmit(e) {
  // Manejar envío de formulario
  const responses = e.values;
  const timestamp = responses[0];
  Logger.log('Formulario enviado en: ' + timestamp);
  // Procesar datos del formulario
}
Operaciones de Hojas de Cálculo
getValues - Obtener rango como array 2D
const sheet = SpreadsheetApp.getActiveSheet();
const values = sheet.getRange('A1:B10').getValues();
// values es un array 2D: [[row1col1, row1col2], [row2col1, row2col2], ...]
values.forEach(row => {
  Logger.log(row);
});
appendRow - Agregar nueva fila
const sheet = SpreadsheetApp.getActiveSheet();
sheet.appendRow(['valor1', 'valor2', 'valor3']);
Operaciones de Correo Electrónico
sendEmailHtml - Correo con formato HTML
MailApp.sendEmail({
  to: 'destinatario@ejemplo.com',
  subject: 'Asunto del Correo',
  body: 'Este correo requiere soporte HTML.',
  htmlBody: `
    <html>
      <body style="font-family: Arial, sans-serif;">
        <h1>Hola</h1>
        <p>Tu mensaje aquí</p>
      </body>
    </html>
  `
});
getUnreadEmails - Procesar correos no leídos
const threads = GmailApp.search('is:unread label:inbox', 0, 10);
threads.forEach(thread => {
  const messages = thread.getMessages();
  messages.forEach(message => {
    Logger.log('De: ' + message.getFrom());
    Logger.log('Asunto: ' + message.getSubject());
  });
});
Registro y Depuración
tryCatch - Manejo de errores
try {
  // Tu código aquí
} catch (error) {
  Logger.log('Error: ' + error.toString());
  // Manejar error
}
Configuración
La extensión funciona sin configuración. Configuraciones opcionales:
{
  "gasIntellisense.enableSnippets": true
}
Requisitos
- VS Code 1.80.0 o superior
- No se requieren dependencias adicionales (no necesitas clasp ni npm en tu proyecto)
Cómo Funciona
Esta extensión incluye las definiciones de tipos oficiales de @types/google-apps-script y registra archivos .gs con el servidor de lenguaje JavaScript de VS Code. El servidor de lenguaje TypeScript/JavaScript proporciona automáticamente IntelliSense usando estas definiciones de tipos.
No se requiere conexión a internet - todas las definiciones de tipos están incluidas con la extensión.
Comparación con Otras Herramientas
| Característica | Esta Extensión | labnol/google-apps-script | Configuración manual de clasp | 
|---|---|---|---|
| IntelliSense sin configuración | ✅ | ❌ | ❌ | 
| Snippets específicos de GAS | ✅ | ❌ | ❌ | 
| Funciona sin conexión | ✅ | ✅ | ✅ | 
| Requiere npm/clasp | ❌ | ❌ | ✅ | 
| Tiempo de configuración | 0 min | 0 min | 15+ min | 
Limitaciones
Esta extensión se enfoca únicamente en IntelliSense y edición de código. No:
- ❌ Sincroniza código con Google Apps Script (usa clasp para esto)
- ❌ Ejecuta o despliega scripts (usa clasp o el editor web)
- ❌ Crea nuevos proyectos de GAS (usa clasp)
Esto es intencional - la extensión hace una cosa bien: mejorar tu experiencia de codificación.
Solución de Problemas
¿IntelliSense no aparece?
- Asegúrate de que el archivo tenga extensión .gs
- Intenta recargar VS Code (Ctrl+Shift+P → "Developer: Reload Window")
- Verifica que la extensión esté activada (busca "GAS IntelliSense" en la barra de estado)
¿Los snippets no funcionan?
- Verifica que gasIntellisense.enableSnippetsesté configurado comotrue(por defecto)
- Asegúrate de estar en un contexto JavaScript (archivo .gs)
- Escribe el prefijo del snippet y presiona Tab o Enter
¿Los tipos parecen desactualizados?
La extensión usa @types/google-apps-script v2.0.7 (última versión a octubre de 2025). Futuras actualizaciones incluirán versiones más recientes.
Hoja de Ruta
Fase 2 (Versión Actual)
- [x] 23 snippets de código adicionales (supera el objetivo de 15+)
- [x] Proveedor de hover personalizado con enlaces a documentación de Google
- [ ] Ayuda de firma mejorada con ejemplos
- [ ] Icono y branding de extensión
Fase 3 (Futuro)
- [ ] Más snippets para Drive, Calendar, Forms y Documents
- [ ] Integración con clasp para push/pull
- [ ] Reglas de linter para errores comunes de GAS
- [ ] Plantillas y scaffolding de proyectos
- [ ] Generación de código con IA
Contribuir
¡Las contribuciones son bienvenidas! Por favor siéntete libre de:
- Reportar bugs vía GitHub Issues
- Enviar solicitudes de características
- Contribuir código vía Pull Requests
- Compartir tu retroalimentación
Recursos Relacionados
- Documentación de Google Apps Script
- clasp - Command Line Apps Script Projects
- @types/google-apps-script en npm
Licencia
Licencia MIT - ver el archivo LICENSE para detalles.
Soporte
- Issues: GitHub Issues
- Discusiones: GitHub Discussions
- Invítame un café: ☕ buymeacoffee.com/apenaravan
Agradecimientos
- Construido sobre @types/google-apps-script por la comunidad DefinitelyTyped
- Inspirado por la necesidad de mejores herramientas de desarrollo para Google Apps Script
Hecho con ❤️ por Alfonso Peñaranda van Bommel para la comunidad de Google Apps Script
Si esta extensión te ayuda, por favor considera:
- ⭐ Dar una estrella al repositorio
- 📝 Dejar una reseña en el marketplace
- 📢 Compartir con otros desarrolladores de GAS
- ☕ Invítame un café
