Skip to content
Documentation
Command

/start-10-2.es

Lesson command

From plugin
ai-agent-camp
345200 skills8 agents200 commands
Install
$ npx -y skills add minicoohei/ai-agent-camp --agent claude-code

How 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.md
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":
Read more
Ships withai-agent-camp

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

Get the whole plugin