CALENDAR_UPDATE_EVENT - Atualizar Evento no Google Calendar
O que é esta Tool?
A CALENDAR_UPDATE_EVENT é a tool responsável por modificar eventos existentes no Google Calendar, permitindo alterar título, data/hora, convidados, local e todas as propriedades configuráveis de um evento.
Por que esta Tool existe?
Mudanças de agenda acontecem constantemente. A CALENDAR_UPDATE_EVENT existe para:
- Reagendar Compromissos: Alterar data/hora de reuniões quando necessário
- Atualizar Informações: Modificar local, descrição ou adicionar detalhes
- Gerenciar Participantes: Adicionar ou remover convidados de eventos
- Automação de Mudanças: Reagendar eventos automaticamente via workflows
Como funciona internamente?
Quando a CALENDAR_UPDATE_EVENT é executada, o sistema:
- Valida Autenticação: Verifica tokens OAuth2 válidos
- Identifica Evento: Usa eventId para localizar o evento específico
- Prepara Alterações: Monta objeto com campos a serem atualizados
- Envia Requisição: Chama API PUT /calendar/v3/calendars/{calendarId}/events/{eventId}
- Notifica Participantes: Google envia emails de atualização aos convidados
- Retorna Confirmação: Dados atualizados do evento
- Se evento não existe: Retorna erro 404
Código interno (google-executors.service.ts:371-387):
case 'updateEvent':
const updateResult = await calendar.events.update({
calendarId: data.calendarId || 'primary',
eventId: data.eventId,
requestBody: {
summary: data.summary,
description: data.description,
start: { dateTime: data.startDateTime, timeZone: data.timeZone || 'America/Sao_Paulo' },
end: { dateTime: data.endDateTime, timeZone: data.timeZone || 'America/Sao_Paulo' },
attendees: data.attendees?.map((email: string) => ({ email })) || [],
location: data.location,
},
});
return {
success: true,
eventId: updateResult.data.id,
updated: updateResult.data.updated,
};
Quando você DEVE usar esta Tool?
Use CALENDAR_UPDATE_EVENT sempre que precisar modificar eventos existentes:
Casos de uso
- Reagendar Reunião: "Mudar reunião de terça para quarta-feira"
- Alterar Local: "Reunião agora será online via Google Meet"
- Adicionar Participantes: "Incluir gerente na reunião de projeto"
- Estender Duração: "Reunião agora termina às 17h ao invés de 16h"
Quando NÃO usar CALENDAR_UPDATE_EVENT
- Criar novo evento: Use CALENDAR_CREATE_EVENT
- Apenas consultar: Use CALENDAR_GET_EVENT
- Cancelar evento: Use CALENDAR_DELETE_EVENT
Parâmetros Detalhados
eventId (string, obrigatório)
O que é: ID único do evento a ser atualizado.
Padrão: Nenhum (obrigatório)
Flow completo para testar:
{
"name": "Teste Calendar - Update 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 atualizar:",
"variableName": "eventId"
}
}
},
{
"id": "calendar_1",
"type": "google_calendar",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Atualizar Evento",
"operation": "updateEvent",
"oauth2": {
"clientId": "{{GOOGLE_CLIENT_ID}}",
"clientSecret": "{{GOOGLE_CLIENT_SECRET}}",
"refreshToken": "{{GOOGLE_REFRESH_TOKEN}}"
},
"calendarId": "primary",
"eventId": "{{eventId}}",
"summary": "Reunião ATUALIZADA",
"startDateTime": "2025-10-26T15:00:00-03:00",
"endDateTime": "2025-10-26T16:00:00-03:00"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 700, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Evento atualizado com sucesso!"
}
}
},
{
"id": "end_1",
"type": "end",
"position": { "x": 900, "y": 100 },
"data": { "label": "Fim" }
}
],
"edges": [
{ "source": "start_1", "target": "input_1" },
{ "source": "input_1", "target": "calendar_1" },
{ "source": "calendar_1", "target": "message_1" },
{ "source": "message_1", "target": "end_1" }
]
}
Teste: Digite um eventId válido e o sistema atualizará o título e horário do evento.
calendarId (string, opcional)
O que é: ID da agenda onde está o evento.
Padrão: "primary" (agenda principal)
summary (string, opcional)
O que é: Novo título do evento. Só atualize se quiser mudar.
startDateTime / endDateTime (string RFC3339, opcional)
O que é: Novas datas/horários. Mantenha formato RFC3339.
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| eventId | string | Sim | ID único do evento a atualizar |
| calendarId | string | Não | ID da agenda (padrão: primary) |
| summary | string | Não | Novo título do evento |
| description | string | Não | Nova descrição |
| location | string | Não | Novo local |
| startDateTime | string (RFC3339) | Não | Nova data/hora de início |
| endDateTime | string (RFC3339) | Não | Nova data/hora de término |
| attendees | array | Não | Nova lista de convidados |
| timeZone | string | Não | Fuso horário (padrão: America/Sao_Paulo) |
Exemplo 1: Reagendar Reunião
Objetivo: Alterar data e horário de uma reunião existente
JSON para Importar
{
"name": "Reagendar 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": "Reagendar para Próxima Semana",
"operation": "updateEvent",
"oauth2": {
"clientId": "{{GOOGLE_CLIENT_ID}}",
"clientSecret": "{{GOOGLE_CLIENT_SECRET}}",
"refreshToken": "{{GOOGLE_REFRESH_TOKEN}}"
},
"calendarId": "primary",
"eventId": "abc123xyz",
"startDateTime": "2025-10-22T14:00:00-03:00",
"endDateTime": "2025-10-22T15:00:00-03:00"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Reunião reagendada para 22/10/2025 às 14:00"
}
}
},
{
"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 reagendada para 22/10/2025 às 14:00
Exemplo 2: Mudar para Reunião Online
Objetivo: Alterar local físico para link de videoconferência
JSON para Importar
{
"name": "Reunião Agora é Online",
"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": "Atualizar para Online",
"operation": "updateEvent",
"oauth2": {
"clientId": "{{GOOGLE_CLIENT_ID}}",
"clientSecret": "{{GOOGLE_CLIENT_SECRET}}",
"refreshToken": "{{GOOGLE_REFRESH_TOKEN}}"
},
"calendarId": "primary",
"eventId": "xyz789abc",
"location": "https://meet.google.com/abc-defg-hij",
"description": "Reunião alterada para formato online via Google Meet"
}
},
{
"id": "message_1",
"type": "message",
"position": { "x": 500, "y": 100 },
"data": {
"label": "Confirmar",
"parameters": {
"message": "Reunião atualizada para formato online!\nLink: https://meet.google.com/abc-defg-hij"
}
}
},
{
"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 atualizada para formato online!
Link: https://meet.google.com/abc-defg-hij
Resposta da Tool
{
"success": true,
"action": "calendar_update_event",
"eventId": "abc123xyz789",
"updated": "2025-10-12T10:45:00.000Z",
"timestamp": "2025-10-12T10:45:00.000Z"
}
Boas Práticas
SIM:
- Busque o eventId antes de atualizar (use LIST_EVENTS ou GET_EVENT)
- Atualize apenas os campos necessários
- Mantenha formato RFC3339 nas datas
- Notifique participantes sobre mudanças importantes
NÃO:
- Não atualize evento sem ter o eventId correto
- Não mude drasticamente sem aviso (ex: mudar de 14h para 22h)
- Não esqueça de atualizar endDateTime se mudar startDateTime
Dicas
Obter eventId: Use CALENDAR_LIST_EVENTS ou CALENDAR_GET_EVENT para descobrir o ID do evento que deseja atualizar.
Atualizações parciais: Você não precisa enviar todos os campos, apenas os que deseja alterar.
Notificações: O Google envia automaticamente emails de atualização para todos os convidados quando você modifica um evento.
Próximos Nodes
→ CALENDAR_GET_EVENT - Buscar detalhes de evento específico → CALENDAR_DELETE_EVENT - Excluir evento → CALENDAR_ADD_ATTENDEE - Adicionar participantes