/** * Worker do Cloudflare — serve o app (guia de objeções, simulador e checklist) * e busca as duas planilhas direto do Google Sheets (exportadas como .xlsx), * do lado do servidor. Não usa nenhuma chave/senha — as planilhas só precisam * estar compartilhadas como "Qualquer pessoa com o link" (Leitor). * * ROTAS: * GET / -> o site (HTML) * GET /dados/simulador.xlsx -> planilha "Simulador" (abas Estratégia/Base de Dados/Beneficios) * GET /dados/checklist.xlsx -> planilha "Check_List_Operação_Portabilidade" * * COMO ATUALIZAR OS DADOS: * É só editar a planilha no Google Sheets normalmente e salvar (o Sheets salva * sozinho). Não precisa fazer mais nada — o site busca a versão mais recente * toda vez que alguém abre a página. Só não pode trocar o link/ID da planilha * sem avisar, porque ele está fixo aqui embaixo (SIMULADOR_SHEET_ID / CHECKLIST_SHEET_ID). * * Se algum dia precisar trocar de planilha, troque só o ID abaixo (a parte do * link do Google Sheets entre "/d/" e "/edit") e publique o Worker de novo. */ // IDs das planilhas no Google Sheets (a parte do link entre "/d/" e "/edit"). // Ex.: https://docs.google.com/spreadsheets/d/ESSE-ID-AQUI/edit const SIMULADOR_SHEET_ID = "1Zr_6aaWGLHUNYTef3KhBhhOSaJA5YG67KmpwwupS0GU"; const CHECKLIST_SHEET_ID = "COLE-AQUI-O-ID-DA-PLANILHA-CHECK-LIST"; function sheetExportUrl(sheetId) { return "https://docs.google.com/spreadsheets/d/" + sheetId + "/export?format=xlsx"; } async function proxyPlanilha(sheetId, nomeParaErro) { try { if (!sheetId || sheetId.startsWith("COLE-AQUI")) { throw new Error("ID da planilha \"" + nomeParaErro + "\" ainda não foi configurado no Worker"); } const resp = await fetch(sheetExportUrl(sheetId), { cache: "no-cache" }); if (!resp.ok) { throw new Error("Google Sheets retornou HTTP " + resp.status + " — confira se a planilha está compartilhada como \"Qualquer pessoa com o link\""); } return new Response(resp.body, { status: 200, headers: { "content-type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "cache-control": "no-cache, max-age=0", } }); } catch (e) { return new Response("Erro ao buscar a planilha \"" + nomeParaErro + "\" no Google Sheets: " + e.message, { status: 502, headers: { "content-type": "text/plain; charset=utf-8" } }); } } export default { async fetch(request, env, ctx) { const url = new URL(request.url); if (url.pathname === "/dados/simulador.xlsx") { return proxyPlanilha(SIMULADOR_SHEET_ID, "Simulador"); } if (url.pathname === "/dados/checklist.xlsx") { return proxyPlanilha(CHECKLIST_SHEET_ID, "Check_List_Operação_Portabilidade"); } // qualquer outra rota: serve o site return new Response(HTML, { headers: { "content-type": "text/html; charset=utf-8" } }); } }; const HTML = ` Guia rápido de objeções e Simulador — TIM Controle

Consulta rápida · TIM Controle

Guia de objeções e Simulador de plano

Toque em copiar pra usar a fala pronta, ou simule o plano ideal pro perfil do cliente.

Objeções
Simulador de plano
Checklist Portabilidade

Carregando dados atualizados...

Fórmula de toda resposta: reconhecer o que o cliente sentiu, dar um motivo real, mostrar o benefício concreto e terminar com uma pergunta que avança a conversa.

1. Reconhecer 2. Motivo real 3. Benefício concreto 4. Pergunta

Nenhum resultado. Tenta outra palavra.

Como funciona: preencha o crivo, o DDD, se o cliente quer plano família e a operadora atual. O simulador cruza com a base de dados oficial e mostra o plano ideal (Opção 1) e as alternativas, com valores e benefícios já calculados.

⚠ Esse DDD exige Duplo Opt-in na venda.

Como funciona: selecione o DDD, o plano já fechado com o cliente e a operadora de origem. O checklist monta o roteiro de venda completo — confirmação gravada, benefícios do plano, entrega do chip e SMS prévio — pronto pra ler ou copiar durante a ligação.

⚠ Esse DDD exige Duplo Opt-in na venda.
`;