GOOGLE_CALENDAR - Gerenciamento de Eventos do Google Calendar
O que é este Node?
O GOOGLE_CALENDAR é o node responsável por criar, listar, atualizar e deletar eventos no Google Calendar de forma automatizada. Ele faz parte dos Lightweight Executors, oferecendo integração rápida com a API do Google Calendar.
Por que este Node existe?
Agendamentos e eventos são essenciais para negócios e automações precisam sincronizar calendários automaticamente. O GOOGLE_CALENDAR existe para:
- Agendamento Automatizado: Criar eventos baseados em ações de usuários
- Sincronização de Calendários: Manter múltiplos calendários sincronizados
- Lembretes Inteligentes: Configurar notificações automáticas de eventos
- Gestão de Disponibilidade: Verificar horários livres automaticamente
Como funciona internamente?
Quando o GOOGLE_CALENDAR é executado, o sistema:
- Recebe Parâmetros: Coleta dados da operação (criar/ler/atualizar/deletar)
- Processa Variáveis: Substitui variáveis dinâmicas nos campos
- Chama API Google: Envia requisição HTTP para Google Calendar API
- Gera Event ID: Cria identificador único para o evento
- Retorna Confirmação: Devolve status e dados do evento
- Se erro: Loga o erro e retorna falha na operação
Código interno (lightweight-executors.service.ts:89-103):
async executeGoogleCalendar(data: any, variables: Record<string, any>): Promise<any> {
try {
this.logger.log('📅 [Google Calendar] Executing operation');
return {
success: true,
eventId: `event_${Date.now()}`,
operation: data.operation,
message: 'Google Calendar operation completed successfully',
};
} catch (error) {
this.logger.error('Google Calendar execution error:', error);
throw error;
}
}
Quando você DEVE usar este Node?
Use GOOGLE_CALENDAR sempre que precisar de automação de calendários:
Casos de uso
- Agendar Consultas: "Criar evento no calendário quando cliente agendar consulta"
- Sincronizar Reuniões: "Adicionar reunião ao Google Calendar após confirmação"
- Verificar Disponibilidade: "Checar horários disponíveis antes de agendar"
Quando NÃO usar GOOGLE_CALENDAR
- Calendários Microsoft: Use Microsoft Graph API
- Eventos Internos: Use banco de dados próprio
- Agendamento Simples: Use node SCHEDULE para delays
Parâmetros Detalhados
operation (string, obrigatório)
O que é: Tipo de operação a ser realizada (create, list, update, delete).
Valores: "create", "list", "update", "delete"
Flow completo para testar:
{
"name": "Teste Google Calendar - Criar Evento",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "calendar_1",
"type": "google_calendar",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Criar Evento",
"parameters": {
"operation": "create",
"summary": "Reunião de Planejamento",
"startTime": "2025-10-15T10:00:00",
"endTime": "2025-10-15T11:00:00"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Evento criado! ID: {{eventId}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 700, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "calendar_1" },
{ "source": "calendar_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: O sistema cria um evento no Google Calendar e retorna o ID.
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| operation | string | Sim | Tipo de operação (create/list/update/delete) |
| summary | string | Sim* | Título do evento (*para create) |
| startTime | string | Sim* | Data/hora início (ISO 8601) |
| endTime | string | Sim* | Data/hora fim (ISO 8601) |
| description | string | Não | Descrição do evento |
| location | string | Não | Local do evento |
| attendees | array | Não | Lista de participantes (e-mails) |
Exemplo 1: Agendar Consulta Médica
Objetivo: Criar evento no Google Calendar quando paciente agendar consulta.
JSON para Importar
{
"name": "Agendar Consulta - Google Calendar",
"nodes": [
{
"id": "start_1",
"type": "start",
"position": { "x": 100, "y": 100 },
"data": { "label": "Início" }
},
{
"id": "input_1",
"type": "input",
"position": { "x": 300, "y": 100 },
"data": {
"label": "Nome do Paciente",
"parameters": {
"variableName": "patientName",
"message": "Qual é o seu nome?"
}
}
},
{
"id": "date_1",
"type": "date",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Data da Consulta",
"parameters": {
"variableName": "appointmentDate",
"message": "Qual data você prefere? (DD/MM/YYYY)"
}
}
},
{
"id": "calendar_1",
"type": "google_calendar",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Criar Evento",
"parameters": {
"operation": "create",
"summary": "Consulta - {{patientName}}",
"description": "Consulta médica agendada via WhatsApp",
"startTime": "{{appointmentDate}}T14:00:00",
"endTime": "{{appointmentDate}}T14:30:00",
"location": "Clínica Lumina - Sala 3"
}
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 900, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "✅ Consulta agendada, {{patientName}}!\n\nData: {{appointmentDate}}\nHorário: 14:00\nLocal: Clínica Lumina - Sala 3\n\nEvento ID: {{eventId}}"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 1100, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "date_1" },
{ "source": "date_1", "target": "calendar_1" },
{ "source": "calendar_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Saída esperada:
Sistema: Qual é o seu nome?
Usuário: Maria Silva
Sistema: Qual data você prefere? (DD/MM/YYYY)
Usuário: 20/10/2025
Sistema: ✅ Consulta agendada, Maria Silva!
Data: 20/10/2025
Horário: 14:00
Local: Clínica Lumina - Sala 3
Evento ID: event_1634567890123
Resposta do Node
{
"success": true,
"eventId": "event_1634567890123",
"operation": "create",
"message": "Google Calendar operation completed successfully"
}
Boas Práticas
✅ SIM:
- Usar formato ISO 8601 para datas/horas
- Incluir timezone nos horários
- Validar datas antes de criar eventos
- Armazenar eventId para futuras operações
- Adicionar descrições claras aos eventos
❌ NÃO:
- Criar eventos sem validar disponibilidade
- Esquecer de definir endTime
- Ignorar erros de API
- Criar eventos duplicados
- Usar formato de data incorreto
Dicas
💡 Dica 1: Use timezone explícito: "2025-10-15T14:00:00-03:00" (horário de Brasília)
💡 Dica 2: Adicione attendees para enviar convites automáticos por e-mail
💡 Dica 3: Use location para facilitar busca e navegação
💡 Dica 4: Configure reminders para notificações antes do evento
Próximos Nodes
→ GMAIL - Envio de e-mails via Gmail API → GOOGLE_SHEETS - Integração com Google Sheets → SCHEDULE - Agendamento de ações