Sistema de Reports Semanais de Time Tracking
Este sistema automatiza a geração e envio de relatórios semanais das tuas horas de trabalho registadas no Notion. Todas as semanas recebes no teu email um report visual com a distribuição do teu tempo entre projetos internos e projetos de clientes.
Visão Geral
Este sistema automatiza a geração e envio de relatórios semanais das tuas horas de trabalho registadas no Notion. Todas as semanas recebes no teu email um report visual com a distribuição do teu tempo entre projetos internos e projetos de clientes.
Pré-requisito obrigatório: Este sistema depende de teres um sistema de time tracking configurado no Notion. Se ainda não tens, consulta primeiro o vídeo de implementação do sistema de registo de tempo antes de avançares.
📺 Vídeo de instalação completa time tracking notion: https://youtu.be/KWdVutZgaFU
Arquitetura do Sistema
O workflow é composto por 4 nós que executam sequencialmente:
Schedule Trigger → Notion (Get Pages) → Code (Processar Dados) → Gmail (Enviar Report)
Descrição Detalhada de Cada Nó
1. Schedule Trigger
Função: Disparar o workflow automaticamente todas as semanas.
Configuração:
- Tipo de intervalo: Semanal
- Hora de execução: 23h00
- O trigger executa uma vez por semana no dia configurado
Nota: Podes ajustar o dia e hora de execução conforme a tua preferência. Por exemplo, domingo às 20h para teres o report antes de começar a nova semana.
2. Notion, Get Many Database Pages
Função: Buscar todas as entradas de tempo registadas nos últimos 7 dias.
Configuração necessária:
- Credenciais: Configurar a integração do Notion com o n8n usando uma Internal Integration do Notion
- Base de dados: Selecionar a base de dados "Registo de tempo" (ou o nome equivalente no teu sistema)
- Filtros aplicados:
Expressões usadas nos filtros:
// Data inicio (após 6 dias atrás às 00:00)
{{ $now.minus(6,'days').set({hour:00,minute:00}) }}
// Data fim (antes de agora)
{{ $now }}
Campos esperados da base de dados Notion:
name→ Nome do projeto/tarefaproperty_nome_clienteounome_cliente→ Nome do cliente (se aplicável)property_minutos_total→ Duração em minutosproperty_cliente→ Booleano que indica se é projeto de cliente (true) ou interno (false)Data inicio→ Data/hora de início do registoData fim→ Data/hora de fim do registo
3. Code (JavaScript)
Função: Processar os dados do Notion e gerar o HTML do relatório.
O que este código faz:
- Separação de projetos: Divide as entradas entre projetos internos e projetos de clientes com base no campo booleano
property_cliente - Agregação de dados: Soma os minutos e conta as entradas por projeto
- Formatação de tempo: Converte minutos para formato legível (ex: "2h 30min")
- Cálculo do período: Determina automaticamente o intervalo de datas (ex: "22 jan - 28 jan")
- Geração de gráficos: Cria barras de progresso HTML para visualização:
- Output HTML: Gera um email responsivo com:
Estrutura do output:
{
html: "...", // HTML completo do email
periodo: "22 jan - 28 jan",
total_minutos: 2400,
total_horas: "40h",
minutos_internos: 1200,
minutos_clientes: 1200,
num_projetos_internos: 5,
num_projetos_clientes: 3
}
4. Gmail, Send a Message
Função: Enviar o relatório gerado para o teu email.
Configuração:
- Destinatário: O teu email
- Assunto: "Relatório semanal: horas"
- Corpo: O HTML gerado pelo nó anterior (
{{ $json.html }}) - Nome do remetente: Personalizável (ex: "Jarvis", "Assistente", etc.)
- Atribuição n8n: Desativada para email mais limpo
Credenciais necessárias: OAuth2 do Gmail configurado no n8n
Campos Obrigatórios na Base de Dados Notion
Para o sistema funcionar corretamente, a tua base de dados de registo de tempo precisa ter:
| Campo | Tipo | Descrição |
|---|---|---|
| Nome/Title | Title | Nome da tarefa ou projeto |
| Data inicio | Date | Data e hora de início |
| Data fim | Date | Data e hora de fim |
| Minutos total | Number/Formula | Duração em minutos |
| Cliente | Checkbox | Se true, é projeto de cliente |
| Nome cliente | Text/Relation | Nome do cliente (opcional, mas recomendado) |
Personalização do Código
Alterar cores dos gráficos
No código JavaScript, procura as linhas com linear-gradient para ajustar as cores:
// Projetos internos (azul por defeito)
'linear-gradient(90deg, #007bff 0%, #0056b3 100%)'
// Projetos clientes (verde por defeito)
'linear-gradient(90deg, #28a745 0%, #1e7e34 100%)'
Alterar período de análise
Para analisar mais ou menos dias, ajusta o valor no filtro do Notion:
// Para últimos 14 dias:
{{ $now.minus(13,'days').set({hour:00,minute:00}) }}
// Para últimos 30 dias:
{{ $now.minus(29,'days').set({hour:00,minute:00}) }}
Exemplo de Output
O email recebido terá este formato:
Cabeçalho:
Na semana de 22 jan - 28 jan tiveste um total de 40h (2400 min) registados.
Cards de resumo:
- Projetos Internos: 20h (1200 min)
- Projetos Clientes: 20h (1200 min)
Lista de projetos (ordenados por tempo, do maior para o menor):
- Cada projeto com barra de progresso visual
- Tempo total e número de entradas
Troubleshooting
O workflow não encontra registos:
- Verifica se os nomes dos campos no Notion correspondem aos esperados pelo código
- Confirma que tens registos dentro do período de 7 dias
O email não é enviado:
- Verifica as credenciais OAuth2 do Gmail
- Confirma que o email de destino está correto
Os projetos não aparecem separados:
- Verifica se o campo
property_clienteexiste e está preenchido como checkbox - No código, o campo é verificado como booleano (
true/false)
Clientes aparecem sem nome:
- Garante que o campo
property_nome_clienteounome_clienteestá preenchido para projetos de clientes
Recursos Adicionais
- 📺 Vídeo de instalação: https://youtu.be/KWdVutZgaFU
- Para o sistema de time tracking no Notion, consulta os vídeos anteriores do canal
Documentação criada por KopkAI
Preferes que isto seja feito por nós? Conhece o nosso serviço de inteligência artificial para empresas.
