Fazemos 10 diagnósticos por semana → garante o teu aqui

← Todos os guiasProdutividade Pessoal

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.

Por Diogo Köpke, fundador da KopkAI4 min de leituraActualizado 28 de janeiro de 2026

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:

  1. Credenciais: Configurar a integração do Notion com o n8n usando uma Internal Integration do Notion
  2. Base de dados: Selecionar a base de dados "Registo de tempo" (ou o nome equivalente no teu sistema)
  3. 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/tarefa
  • property_nome_cliente ou nome_cliente → Nome do cliente (se aplicável)
  • property_minutos_total → Duração em minutos
  • property_cliente → Booleano que indica se é projeto de cliente (true) ou interno (false)
  • Data inicio → Data/hora de início do registo
  • Data 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:

  1. Separação de projetos: Divide as entradas entre projetos internos e projetos de clientes com base no campo booleano property_cliente
  2. Agregação de dados: Soma os minutos e conta as entradas por projeto
  3. Formatação de tempo: Converte minutos para formato legível (ex: "2h 30min")
  4. Cálculo do período: Determina automaticamente o intervalo de datas (ex: "22 jan - 28 jan")
  5. Geração de gráficos: Cria barras de progresso HTML para visualização:
  6. 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:

CampoTipoDescrição
Nome/TitleTitleNome da tarefa ou projeto
Data inicioDateData e hora de início
Data fimDateData e hora de fim
Minutos totalNumber/FormulaDuração em minutos
ClienteCheckboxSe true, é projeto de cliente
Nome clienteText/RelationNome 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_cliente existe 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_cliente ou nome_cliente está preenchido para projetos de clientes

Recursos Adicionais


Documentação criada por KopkAI

Queres isto feito no teu negócio?

No diagnóstico gratuito de 30 minutos vemos juntos o que dá para automatizar na tua operação.

Agenda o teu Diagnóstico Gratuito

30 minutos · online · sem compromisso