Pular para conteúdo

CALENDAR_DELETE_EVENT - Excluir Evento do Google Calendar

O que é esta Tool?

A CALENDAR_DELETE_EVENT é a tool responsável por remover permanentemente eventos do Google Calendar, cancelando compromissos e notificando participantes automaticamente.

Por que esta Tool existe?

Cancelamentos acontecem. A CALENDAR_DELETE_EVENT existe para:

  1. Cancelar Compromissos: Remover reuniões canceladas ou adiadas
  2. Limpar Agenda: Excluir eventos obsoletos ou duplicados
  3. Automação de Cancelamentos: Integrar com workflows de cancelamento
  4. Notificar Participantes: Avisar convidados sobre cancelamento automaticamente

Como funciona internamente?

Quando a CALENDAR_DELETE_EVENT é executada, o sistema:

  1. Valida Autenticação: Verifica tokens OAuth2
  2. Identifica Evento: Usa eventId para localizar o evento
  3. Envia Requisição: DELETE /calendar/v3/calendars/{calendarId}/events/{eventId}
  4. Notifica Participantes: Google envia emails de cancelamento
  5. Remove Evento: Evento é permanentemente excluído
  6. Retorna Confirmação: Success com ID do evento removido
  7. Se já excluído: Retorna erro 410 (Gone)

Código interno (google-executors.service.ts:403-410):

case 'deleteEvent':
  await calendar.events.delete({
    calendarId: data.calendarId || 'primary',
    eventId: data.eventId,
  });

  return {
    success: true,
    message: 'Event deleted successfully',
  };

Quando você DEVE usar esta Tool?

Use CALENDAR_DELETE_EVENT sempre que precisar cancelar eventos:

Casos de uso

  1. Cancelar Consulta: "Cliente cancelou consulta médica"
  2. Remover Reunião: "Reunião não será mais necessária"
  3. Limpar Duplicatas: "Evento foi criado duas vezes por engano"
  4. Workflow de Cancelamento: Automatizar após receber confirmação de cancelamento

Quando NÃO usar CALENDAR_DELETE_EVENT

  • Apenas reagendar: Use CALENDAR_UPDATE_EVENT para mudar data/hora
  • Consultar evento: Use CALENDAR_GET_EVENT
  • Desativar temporariamente: Use CALENDAR_UPDATE_EVENT com status "cancelled"

Parâmetros Detalhados

eventId (string, obrigatório)

O que é: ID único do evento a ser excluído permanentemente.

Padrão: Nenhum (obrigatório)

Flow completo para testar:

{
  "name": "Teste Calendar - Delete Event",
  "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": "ID do Evento",
        "parameters": {
          "message": "Digite o ID do evento para excluir:",
          "variableName": "eventId"
        }
      }
    },
    {
      "id": "condition_1",
      "type": "condition",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Confirmar Exclusão?",
        "parameters": {
          "message": "Tem certeza que deseja EXCLUIR este evento? Digite SIM para confirmar:",
          "variableName": "confirmacao",
          "condition": "{{confirmacao}} == 'SIM'"
        }
      }
    },
    {
      "id": "calendar_1",
      "type": "google_calendar",
      "position": { "x": 700, "y": 50 },
      "data": {
        "label": "Excluir Evento",
        "operation": "deleteEvent",
        "oauth2": {
          "clientId": "{{GOOGLE_CLIENT_ID}}",
          "clientSecret": "{{GOOGLE_CLIENT_SECRET}}",
          "refreshToken": "{{GOOGLE_REFRESH_TOKEN}}"
        },
        "calendarId": "primary",
        "eventId": "{{eventId}}"
      }
    },
    {
      "id": "message_success",
      "type": "message",
      "position": { "x": 900, "y": 50 },
      "data": {
        "label": "Sucesso",
        "parameters": {
          "message": "Evento excluído com sucesso! Participantes foram notificados."
        }
      }
    },
    {
      "id": "message_cancel",
      "type": "message",
      "position": { "x": 700, "y": 150 },
      "data": {
        "label": "Cancelado",
        "parameters": {
          "message": "Exclusão cancelada. Evento mantido na agenda."
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "input_1" },
    { "source": "input_1", "target": "condition_1" },
    { "source": "condition_1", "target": "calendar_1", "label": "true" },
    { "source": "condition_1", "target": "message_cancel", "label": "false" },
    { "source": "calendar_1", "target": "message_success" },
    { "source": "message_success", "target": "end_1" },
    { "source": "message_cancel", "target": "end_1" }
  ]
}

Teste: Digite um eventId válido e confirme com "SIM" para excluir o evento.

calendarId (string, opcional)

O que é: ID da agenda onde está o evento.

Padrão: "primary" (agenda principal)

Parâmetros

Campo Tipo Obrigatório Descrição
eventId string Sim ID único do evento a excluir
calendarId string Não ID da agenda (padrão: primary)

Exemplo 1: Cancelamento Simples

Objetivo: Excluir evento após confirmação

JSON para Importar

{
  "name": "Cancelar Reunião",
  "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": "Cancelar Evento",
        "operation": "deleteEvent",
        "oauth2": {
          "clientId": "{{GOOGLE_CLIENT_ID}}",
          "clientSecret": "{{GOOGLE_CLIENT_SECRET}}",
          "refreshToken": "{{GOOGLE_REFRESH_TOKEN}}"
        },
        "calendarId": "primary",
        "eventId": "abc123xyz789"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Confirmar Cancelamento",
        "parameters": {
          "message": "Reunião cancelada com sucesso!\n\nTodos os participantes foram notificados por email."
        }
      }
    },
    {
      "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" }
  ]
}

Saída esperada:

Sistema: Reunião cancelada com sucesso!

Todos os participantes foram notificados por email.

Exemplo 2: Cancelamento com Busca Prévia

Objetivo: Listar eventos e permitir seleção para cancelamento

JSON para Importar

{
  "name": "Buscar e Cancelar Evento",
  "nodes": [
    {
      "id": "start_1",
      "type": "start",
      "position": { "x": 100, "y": 100 },
      "data": { "label": "Início" }
    },
    {
      "id": "calendar_list",
      "type": "google_calendar",
      "position": { "x": 300, "y": 100 },
      "data": {
        "label": "Listar Próximos Eventos",
        "operation": "listEvents",
        "oauth2": {
          "clientId": "{{GOOGLE_CLIENT_ID}}",
          "clientSecret": "{{GOOGLE_CLIENT_SECRET}}",
          "refreshToken": "{{GOOGLE_REFRESH_TOKEN}}"
        },
        "calendarId": "primary",
        "maxResults": 5
      }
    },
    {
      "id": "input_1",
      "type": "input",
      "position": { "x": 500, "y": 100 },
      "data": {
        "label": "Selecionar Evento",
        "parameters": {
          "message": "Eventos encontrados:\n{{calendar_list.events}}\n\nDigite o ID do evento para cancelar:",
          "variableName": "eventIdToDelete"
        }
      }
    },
    {
      "id": "calendar_delete",
      "type": "google_calendar",
      "position": { "x": 700, "y": 100 },
      "data": {
        "label": "Excluir Evento Selecionado",
        "operation": "deleteEvent",
        "oauth2": {
          "clientId": "{{GOOGLE_CLIENT_ID}}",
          "clientSecret": "{{GOOGLE_CLIENT_SECRET}}",
          "refreshToken": "{{GOOGLE_REFRESH_TOKEN}}"
        },
        "calendarId": "primary",
        "eventId": "{{eventIdToDelete}}"
      }
    },
    {
      "id": "message_1",
      "type": "message",
      "position": { "x": 900, "y": 100 },
      "data": {
        "label": "Confirmar",
        "parameters": {
          "message": "Evento removido com sucesso!"
        }
      }
    },
    {
      "id": "end_1",
      "type": "end",
      "position": { "x": 1100, "y": 100 },
      "data": { "label": "Fim" }
    }
  ],
  "edges": [
    { "source": "start_1", "target": "calendar_list" },
    { "source": "calendar_list", "target": "input_1" },
    { "source": "input_1", "target": "calendar_delete" },
    { "source": "calendar_delete", "target": "message_1" },
    { "source": "message_1", "target": "end_1" }
  ]
}

Saída esperada:

Sistema: Eventos encontrados:
1. Reunião Semanal (ID: abc123)
2. Consulta Médica (ID: xyz789)

Digite o ID do evento para cancelar:
Usuário: abc123
Sistema: Evento removido com sucesso!

Resposta da Tool

{
  "success": true,
  "action": "calendar_delete_event",
  "message": "Event deleted successfully",
  "eventId": "abc123xyz789",
  "timestamp": "2025-10-12T11:00:00.000Z"
}

Boas Práticas

SIM:

  • Sempre confirme antes de excluir (use CONDITION node)
  • Liste eventos antes para usuário visualizar (LIST_EVENTS)
  • Informe claramente que a exclusão é permanente
  • Avise que participantes serão notificados

NÃO:

  • Não exclua sem confirmação em flows automatizados
  • Não confunda com UPDATE (excluir é permanente)
  • Não exclua eventos recorrentes sem avisar (exclui todas ocorrências)

Dicas

Exclusão é permanente: Não há como recuperar um evento excluído. Use com cautela!

Notificação automática: Todos os convidados recebem email de cancelamento automaticamente.

Eventos recorrentes: Excluir um evento recorrente remove TODAS as ocorrências. Para remover apenas uma instância, use a API com instanceId.

Alternativa ao DELETE: Se preferir manter histórico, use UPDATE_EVENT com status "cancelled" ao invés de excluir.

Próximos Nodes

CALENDAR_UPDATE_EVENT - Atualizar evento ao invés de excluir → CALENDAR_LIST_EVENTS - Listar eventos antes de excluir → CALENDAR_GET_EVENT - Verificar detalhes antes de cancelar