/start-10-2.es
Lesson command
$ npx -y skills add minicoohei/ai-agent-camp --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/start-10-2.es
Context preview
What this command does when you run it.
Lesson command
Command definition
start-10-2.es.mddescription: "Lesson command"
chapter: "courses/aiagent/lesson03-core/module10-gas"
prerequisites: ["start-10-1"]
duration: "~30 min"
level: "intermediate"
tags: ["gas", "calendar", "google", "automation"]
nonInteractiveMode: deferred
🎓 Lesson 10-2: Automatizacion de hojas de calculo con GAS
📍 Lo que hara en esta sesion
**Lección 10-2: Integración de GAS con Google Calendar**!
| Elemento | Contenido | |------|------| | Objetivo | Automatizar operaciones de eventos con la API de Google Calendar desde GAS | | Duracion | ~30 min | | Habilidades utilizadas | gas-clasp-ops, Google Calendar API, gogcli | | Requisitos previos | Lesson 10-1 completada, proyecto GAS creado, Apps Script API habilitada | | Pagina del curso | [Module 10: GAS](https://ai-agent.camp/es/course/module-10) como referencia paralela |
**Flujo de la sesion:** 1. Crear un script de obtención de calendario 2. Crear, actualizar y eliminar eventos 3. Configurar triggers y notificaciones
Al final de esta sesion, podra automatizar la integracion del calendario.
> **💡 Consejo**: Si la respuesta de la IA se detiene a mitad de camino, escriba "por favor continue" o "siga adelante" para reanudar. Este es un comportamiento de Cursor, no un mal funcionamiento.
---
🎯 Verificacion de preparacion
Primero verifiquemos que todo este listo.
**Configuracion de AskQuestion:**
{
"title": "🎯 Verificacion previa a la sesion",
"questions": [{
"id": "readiness",
"prompt": "Esta listo/a?",
"options": [
{"id": "ready", "label": "Listo! Comencemos"},
{"id": "check_prereq", "label": "Verificar requisitos previos"},
{"id": "view_html", "label": "Ver primero la pagina del curso"},
{"id": "different_lesson", "label": "Ir a otra leccion"}
]
}]
}(ready → Ir al Step 1) (check_prereq → Ejecutar verificacion de requisitos previos) (view_html → Mostrar ruta de la pagina del curso) (different_lesson → Mostrar lista de modulos)
---
🚀 Step 1: Calendar Retrieval Script
**Verificación de requisitos previos (ejecución automática):** Verifique lo siguiente antes de continuar:
1. **Verificar `.clasp.json`**: Verificar que `gas-example/.clasp.json` existe. Si no, complete primero 4-1. 2. **Verificar que Apps Script API está habilitada**: Verificar que "Google Apps Script API" está ON en https://script.google.com/home/usersettings. 3. **Configuración de oauthScopes en `appsscript.json`**: Añadir los siguientes alcances a `gas-example/appsscript.json` para usar la Calendar API:
{
"timeZone": "Asia/Tokyo",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/calendar",
"https://www.googleapis.com/auth/script.external_request"
]
}> **Importante**: Si no se configuran los oauthScopes, se producirá un error "Permission denied" al llamar a la Calendar API.
Utilice AskQuestion para elegir "Continuar / Solo ver el ejemplo / Omitir".
**Configuracion de AskQuestion:**
{
"title": "🚀 Step 1: Script de obtención de calendario",
"questions": [{
"id": "step_action",
"prompt": "Que desea hacer con este paso?",
"options": [
{"id": "practice", "label": "Continuar"},
{"id": "review", "label": "Solo ver el ejemplo"},
{"id": "skip", "label": "Omitir"}
]
}]
}**Indicaciones tras la seleccion:** Entrada:
Por favor, cree un archivo Calendar.gs en el directorio gas-example con el siguiente contenido:
function getDefaultCalendar() {
const calendar = CalendarApp.getDefaultCalendar();
Logger.log("Nombre del calendario: " + calendar.getName());
Logger.log("ID del calendario: " + calendar.getId());
return calendar;
}
function getAllCalendars() {
const calendars = CalendarApp.getAllCalendars();
Logger.log("Total de calendarios: " + calendars.length);
calendars.forEach(calendar => {
Logger.log("- " + calendar.getName());
});
return calendars;
}
Por favor, sincronice con clasp push.**Resultado esperado:** Calendar.gs se sincroniza con Google Drive y puede recuperar la lista de calendarios.
---
🚀 Step 2: Event Creation Function
Utilice AskQuestion para elegir "Continuar / Solo ver el ejemplo / Omitir".
**Configuracion de AskQuestion:**
{
"title": "🚀 Step 2: Función de creación de eventos",
"questions": [{
"id": "step_action",
"prompt": "Que desea hacer con este paso?",
"options": [
{"id": "practice", "label": "Continuar"},
{"id": "review", "label": "Solo ver el ejemplo"},
{"id": "skip", "label": "Omitir"}
]
}]
}**Indicaciones tras la seleccion:** Entrada:
Por favor, añada la siguiente función de creación de eventos a Calendar.gs:
function createSimpleEvent(title, startTime, endTime) {
const calendar = CalendarApp.getDefaultCalendar();
const event = calendar.createEvent(title, startTime, endTime);
Logger.log("Evento creado: " + title);
Logger.log("ID del evento: " + event.getId());
return event.getId();
}
function createTomorrowEvent() {
const tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
const startTime = new Date(tomorrow.getFullYear(), tomorrow.getMonth(), tomorrow.getDate(), 14, 0, 0);
const endTime = new Date(startTime.getTime() + 60 * 60 * 1000);
return createSimpleEvent("Evento de prueba", startTime, endTime);
}
Por favor, ejecute clasp push y luego createTomorrowEvent en el editor de GAS.**Resultado esperado:** Se agrega un "Evento de prueba" al calendario por 1 hora a partir de las 14:00 de manana.
---
🚀 Step 3: Get Event List
Utilice AskQuestion para elegir "Continuar / Solo ver el ejemplo / Omitir".
**Configuracion de AskQuestion:**
{
"title": "🚀 Step 3: Obtener lista de eventos",
"questions": [{
"id": "step_action",
"prompt": "Que desea hacer con este paso?",
"options": [
{"id": "practice", "label": "Continuar"},
{"id": "review", "label":Read more
description: "Lesson command" chapter: "courses/aiagent/lesson03-core/module10-gas" prerequisites: ["start-10-1"] duration: "~30 min" level: "intermediate" tags: ["gas", "calendar", "google", "automation"] nonInteractiveMode: deferred
🎓 Lesson 10-2: Automatizacion de hojas de calculo con GAS
📍 Lo que hara en esta sesion
**Lección 10-2: Integración de GAS con Google Calendar**!
| Elemento | Contenido | |------|------| | Objetivo | Automatizar operaciones de eventos con la API de Google Calendar desde GAS | | Duracion | ~30 min | | Habilidades utilizadas | gas-clasp-ops, Google Calendar API, gogcli | | Requisitos previos | Lesson 10-1 completada, proyecto GAS creado, Apps Script API habilitada | | Pagina del curso | [Module 10: GAS](https://ai-agent.camp/es/course/module-10) como referencia paralela |
**Flujo de la sesion:** 1. Crear un script de obtención de calendario 2. Crear, actualizar y eliminar eventos 3. Configurar triggers y notificaciones
Al final de esta sesion, podra automatizar la integracion del calendario.
> **💡 Consejo**: Si la respuesta de la IA se detiene a mitad de camino, escriba "por favor continue" o "siga adelante" para reanudar. Este es un comportamiento de Cursor, no un mal funcionamiento.
---
🎯 Verificacion de preparacion
Primero verifiquemos que todo este listo.
**Configuracion de AskQuestion:**
{
"title": "🎯 Verificacion previa a la sesion",
"questions": [{
"id": "readiness",
"prompt": "Esta listo/a?",
"options": [
{"id": "ready", "label": "Listo! Comencemos"},
{"id": "check_prereq", "label": "Verificar requisitos previos"},
{"id": "view_html", "label": "Ver primero la pagina del curso"},
{"id": "different_lesson", "label": "Ir a otra leccion"}
]
}]
}(ready → Ir al Step 1) (check_prereq → Ejecutar verificacion de requisitos previos) (view_html → Mostrar ruta de la pagina del curso) (different_lesson → Mostrar lista de modulos)
---
🚀 Step 1: Calendar Retrieval Script
**Verificación de requisitos previos (ejecución automática):** Verifique lo siguiente antes de continuar:
1. **Verificar `.clasp.json`**: Verificar que `gas-example/.clasp.json` existe. Si no, complete primero 4-1. 2. **Verificar que Apps Script API está habilitada**: Verificar que "Google Apps Script API" está ON en https://script.google.com/home/usersettings. 3. **Configuración de oauthScopes en `appsscript.json`**: Añadir los siguientes alcances a `gas-example/appsscript.json` para usar la Calendar API:
{
"timeZone": "Asia/Tokyo",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/calendar",
"https://www.googleapis.com/auth/script.external_request"
]
}> **Importante**: Si no se configuran los oauthScopes, se producirá un error "Permission denied" al llamar a la Calendar API.
Utilice AskQuestion para elegir "Continuar / Solo ver el ejemplo / Omitir".
**Configuracion de AskQuestion:**
{
"title": "🚀 Step 1: Script de obtención de calendario",
"questions": [{
"id": "step_action",
"prompt": "Que desea hacer con este paso?",
"options": [
{"id": "practice", "label": "Continuar"},
{"id": "review", "label": "Solo ver el ejemplo"},
{"id": "skip", "label": "Omitir"}
]
}]
}**Indicaciones tras la seleccion:** Entrada:
Por favor, cree un archivo Calendar.gs en el directorio gas-example con el siguiente contenido:
function getDefaultCalendar() {
const calendar = CalendarApp.getDefaultCalendar();
Logger.log("Nombre del calendario: " + calendar.getName());
Logger.log("ID del calendario: " + calendar.getId());
return calendar;
}
function getAllCalendars() {
const calendars = CalendarApp.getAllCalendars();
Logger.log("Total de calendarios: " + calendars.length);
calendars.forEach(calendar => {
Logger.log("- " + calendar.getName());
});
return calendars;
}
Por favor, sincronice con clasp push.**Resultado esperado:** Calendar.gs se sincroniza con Google Drive y puede recuperar la lista de calendarios.
---
🚀 Step 2: Event Creation Function
Utilice AskQuestion para elegir "Continuar / Solo ver el ejemplo / Omitir".
**Configuracion de AskQuestion:**
{
"title": "🚀 Step 2: Función de creación de eventos",
"questions": [{
"id": "step_action",
"prompt": "Que desea hacer con este paso?",
"options": [
{"id": "practice", "label": "Continuar"},
{"id": "review", "label": "Solo ver el ejemplo"},
{"id": "skip", "label": "Omitir"}
]
}]
}**Indicaciones tras la seleccion:** Entrada:
Por favor, añada la siguiente función de creación de eventos a Calendar.gs:
function createSimpleEvent(title, startTime, endTime) {
const calendar = CalendarApp.getDefaultCalendar();
const event = calendar.createEvent(title, startTime, endTime);
Logger.log("Evento creado: " + title);
Logger.log("ID del evento: " + event.getId());
return event.getId();
}
function createTomorrowEvent() {
const tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
const startTime = new Date(tomorrow.getFullYear(), tomorrow.getMonth(), tomorrow.getDate(), 14, 0, 0);
const endTime = new Date(startTime.getTime() + 60 * 60 * 1000);
return createSimpleEvent("Evento de prueba", startTime, endTime);
}
Por favor, ejecute clasp push y luego createTomorrowEvent en el editor de GAS.**Resultado esperado:** Se agrega un "Evento de prueba" al calendario por 1 hora a partir de las 14:00 de manana.
---
🚀 Step 3: Get Event List
Utilice AskQuestion para elegir "Continuar / Solo ver el ejemplo / Omitir".
**Configuracion de AskQuestion:**
{
"title": "🚀 Step 3: Obtener lista de eventos",
"questions": [{
"id": "step_action",
"prompt": "Que desea hacer con este paso?",
"options": [
{"id": "practice", "label": "Continuar"},
{"id": "review", "label":AI Agent Training for Non-Engineers - Complete Guide to Claude Code / Cursor / Codex ### ⚠️ Before you clone Official repository (maintained by the authors): Running AI agents from this repo grants them shell, file-write, and external-API permissions on your
Other commands on ai-agent-camp.
- /check-setup.en
Top-level alias — see lesson/check-setup.en.md for the full body.
Open command - /check-setup.es
Alias de nivel superior — el cuerpo completo está en lesson/check-setup.es.md.
Open command - /check-setup
Top-level alias — see lesson/check-setup.md for the full body.
Open command - /check-security.en
Lesson command
Open command - /check-security.es
Lesson command
Open command - /check-security
Lesson command
Open command

