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:
- Cancelar Compromissos: Remover reuniões canceladas ou adiadas
- Limpar Agenda: Excluir eventos obsoletos ou duplicados
- Automação de Cancelamentos: Integrar com workflows de cancelamento
- Notificar Participantes: Avisar convidados sobre cancelamento automaticamente
Como funciona internamente?
Quando a CALENDAR_DELETE_EVENT é executada, o sistema:
- Valida Autenticação: Verifica tokens OAuth2
- Identifica Evento: Usa eventId para localizar o evento
- Envia Requisição: DELETE /calendar/v3/calendars/{calendarId}/events/{eventId}
- Notifica Participantes: Google envia emails de cancelamento
- Remove Evento: Evento é permanentemente excluído
- Retorna Confirmação: Success com ID do evento removido
- 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
- Cancelar Consulta: "Cliente cancelou consulta médica"
- Remover Reunião: "Reunião não será mais necessária"
- Limpar Duplicatas: "Evento foi criado duas vezes por engano"
- 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