Pular para conteúdo

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:

  1. Reagendar Compromissos: Alterar data/hora de reuniões quando necessário
  2. Atualizar Informações: Modificar local, descrição ou adicionar detalhes
  3. Gerenciar Participantes: Adicionar ou remover convidados de eventos
  4. Automação de Mudanças: Reagendar eventos automaticamente via workflows

Como funciona internamente?

Quando a CALENDAR_UPDATE_EVENT é executada, o sistema:

  1. Valida Autenticação: Verifica tokens OAuth2 válidos
  2. Identifica Evento: Usa eventId para localizar o evento específico
  3. Prepara Alterações: Monta objeto com campos a serem atualizados
  4. Envia Requisição: Chama API PUT /calendar/v3/calendars/{calendarId}/events/{eventId}
  5. Notifica Participantes: Google envia emails de atualização aos convidados
  6. Retorna Confirmação: Dados atualizados do evento
  7. 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

  1. Reagendar Reunião: "Mudar reunião de terça para quarta-feira"
  2. Alterar Local: "Reunião agora será online via Google Meet"
  3. Adicionar Participantes: "Incluir gerente na reunião de projeto"
  4. 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