Plataforma web para registrar horários de trabalho (Entrada, Saída Almoço, Retorno do Almoço e Saída) direto em uma planilha de ponto do Google Sheets, com cálculo automático do Total do expediente.
O app é 100% estático (React + TypeScript + Vite, sem outras bibliotecas) e conversa com
o Google Sheets pelo navegador usando fetch. Ele usa apenas o escopo OAuth
drive.file: o acesso é
concedido somente à planilha que você escolher no Google Picker.
- Conectar Google autoriza o app (Google Identity Services, escopo
drive.file). - Escolher planilha abre o Google Picker; selecionar o arquivo é o que concede acesso a ele.
- O dia padrão é o atual, mas qualquer dia pode ser selecionado para correção.
- Cada horário tem um campo próprio com os botões Agora (usa a hora atual) e Aplicar (grava na planilha). Aplicar todos grava os quatro de uma vez.
- A cada aplicação, a fórmula do Total é gravada na coluna H:
(Saída Almoço − Entrada) + (Saída − Retorno do Almoço). - Se a aba do mês (ex.:
Julho 26) não existir, o app oferece criá-la duplicando a abaAmostra— preservando formatação, fórmulas de rodapé e a grade de feriados — e preenchendo as datas do mês.
A planilha deve seguir o modelo da aba Amostra:
- Abas mensais nomeadas
{Mês} {AA}(ex.:Julho 26); - Dias do mês nas linhas 17–47 (coluna B = data, D–G = horários, H = Total);
- Aba
Folha rostocom os dados de empregador/empregado e o horário padrão; - Intervalo nomeado
feriadoscom a grade de feriados.
- Crie (ou use) um projeto em console.cloud.google.com.
- Habilite as APIs Google Sheets API e Google Picker API.
- Em APIs e serviços → Credenciais:
- Crie um ID do cliente OAuth do tipo Aplicativo da Web e adicione as origens
autorizadas (ex.:
http://localhost:5173e a URL do site no Netlify); - Crie uma Chave de API (restrinja à Picker API e aos seus domínios).
- Crie um ID do cliente OAuth do tipo Aplicativo da Web e adicione as origens
autorizadas (ex.:
- Configure a Tela de permissão OAuth e adicione seu e-mail como usuário de teste, caso o app não esteja publicado.
As credenciais podem ser informadas de duas formas:
- Na interface do app (ficam no
localStoragedo navegador); ou - Em variáveis de ambiente no build (veja
.env.example):VITE_GOOGLE_CLIENT_ID,VITE_GOOGLE_API_KEYeVITE_GOOGLE_APP_ID(número do projeto, opcional).
npm install
npm run dev # servidor local (http://localhost:5173)
npm run build # checagem de tipos + build de produção em dist/
npm run preview # serve o build localmenteO projeto é um site estático — não usa Netlify Functions. O netlify.toml já define
build (npm run build) e publicação (dist/).
netlify deploy --build # deploy de preview
netlify deploy --build --prod # deploy de produçãoLembre-se de adicionar a URL gerada às origens autorizadas do OAuth Client ID no Google Cloud, senão o login do Google não abre.