Gerador de eventos fake em iCal
Gera N eventos fictícios em formato .ics (compromissos, prazos) para testes de integração com Google/Outlook.
—
Arquivos ICS e RFC 5545: o formato universal de agenda
Um arquivo .ics é texto puro no formato iCalendar definido pela RFC 5545 (2009, substituindo a antiga RFC 2445). É a língua franca que faz um convite criado no Google Agenda aparecer corretamente no Apple Calendar, Outlook, Thunderbird e Fantastical sem ninguém combinar um protocolo de rede — todo cliente de calendário relevante lê e escreve a mesma gramática baseada em texto. Um gerador de ICS mock é útil para QA de parsers de email, para popular agendas de desenvolvimento com dados realistas e para testar workflows acionados por webhook que importam eventos de terceiros.
O arquivo ICS mínimo viável tem um wrapper VCALENDAR com um ou mais blocos VEVENT. A gramática é orientada a linhas, cada linha segue CHAVE:VALOR ou CHAVE;PARAM=valor:VALOR e toda chave é maiúscula. Propriedades obrigatórias no VEVENT: UID (identificador global único — normalmente uuid@seudominio), DTSTAMP (quando o registro foi criado) e DTSTART. A maioria dos eventos também inclui DTEND ou DURATION, SUMMARY, DESCRIPTION e LOCATION.
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//YourApp//Calendar 1.0//EN
BEGIN:VEVENT
UID:[email protected]
DTSTAMP:20240501T120000Z
DTSTART:20240515T100000Z
DTEND:20240515T110000Z
SUMMARY:Team Standup
DESCRIPTION:Daily sync
LOCATION:Zoom Meeting Room
ORGANIZER;CN=Alice:mailto:[email protected]
ATTENDEE;ROLE=REQ-PARTICIPANT:mailto:[email protected]
END:VEVENT
END:VCALENDAR
Convites por email, anexos e a propriedade METHOD
O caso de uso mais comum é o convite de reunião enviado como anexo de email com tipo MIME text/calendar; method=REQUEST. Gmail, Outlook e Apple Mail reconhecem o anexo e renderizam botões "Sim/Talvez/Não" inline, que escrevem uma resposta de volta como arquivo METHOD:REPLY. Outros métodos incluem PUBLISH (feed de calendário sem RSVP), CANCEL (para remover um evento já enviado), REFRESH, COUNTER e DECLINECOUNTER. Para um link "Adicionar ao calendário" em uma página de marketing, PUBLISH é a escolha certa.
Fusos horários, recorrência e CalDAV
Fuso horário é a propriedade que mais geradores erram. Três opções existem: sufixo UTC Z (DTSTART:20240515T130000Z) — sem ambiguidade mas perde a intenção local do usuário; parâmetro TZID (DTSTART;TZID=America/Sao_Paulo:20240515T100000) — preferido para eventos atrelados a um lugar; e hora local flutuante (sem Z, sem TZID) — apenas para casos do tipo "todo dia às 9 da manhã onde você estiver". O Brasil aboliu o horário de verão em 2019, então todos os fusos brasileiros agora ficam fixos em UTC-3 ano inteiro; arquivos ICS antigos com BRST ainda podem circular.
Eventos recorrentes usam a propriedade RRULE: RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR;COUNT=12 descreve "segunda/quarta/sexta por doze ocorrências". Exceções vão em EXDATE, datas adicionais em RDATE. O CalDAV (RFC 4791) é o protocolo HTTP companheiro que permite clientes sincronizarem agendas com um servidor (ler, escrever, consultar) — é o que Apple Calendar, Thunderbird Lightning e DAVx5 usam por baixo dos panos. Calendários assinados são apenas uma URL .ics pública que os clientes refetcham periodicamente (de 15 minutos a várias horas, configurável por cliente).
Armadilhas de codificação e escolha de biblioteca
O formato é anterior ao JSON e mostra isso. Linhas com mais de 75 octetos precisam ser dobradas: quebrar com CRLF seguido por um espaço no início da continuação. Vírgulas, ponto e vírgulas, contrabarras e quebras de linha dentro de valores precisam ser escapados como \, \; \\ e \n. Quebras de linha são CRLF, não LF — o Outlook já recusou arquivos só com LF. Bibliotecas maduras cuidam disso para você: ical.js (browser e Node), node-ical, icalendar (Python), iCal4j (Java) e vobject (Python). Escrever o formato à mão tudo bem para geradores triviais; pare de escrever à mão no momento em que precisar de expansão de RRULE ou conversão de TZID.
Perguntas frequentes
Dá para anexar um .ics em convite de email? Sim. Use MIME text/calendar; method=REQUEST e Gmail/Outlook/Apple Mail renderizam botões de RSVP inline.
Como funcionam eventos recorrentes? Use a propriedade RRULE com FREQ (DAILY, WEEKLY, MONTHLY, YEARLY), opcionalmente BYDAY, BYMONTHDAY, COUNT ou UNTIL. Adicione EXDATE para exceções.
Fuso horário é obrigatório? Recomendado para clareza. Use Z para UTC, TZID para eventos atrelados a um local físico, hora flutuante só para lembretes de "hábito pessoal".
Posso reutilizar o mesmo UID? Sim — é assim que você atualiza ou cancela um evento. Envie um novo VEVENT com o mesmo UID e um SEQUENCE maior, com METHOD:REQUEST para atualização ou METHOD:CANCEL para remover.
Ferramentas Relacionadas
Gerador de Manuscrito
Converte texto digitado em uma imagem com aparência de letra manuscrita. Útil para tornar trabalhos digitais mais pessoais.
Gerador de Currículo
Preenche um currículo simples (CV) imprimível em A4 a partir de formulário com dados pessoais, formação e experiência.
Gerador de Favicon
Gera favicon a partir de texto/emoji em todos os tamanhos comuns (16, 32, 48, 64, 192, 512). Download como PNG.