Pular para o conteúdo
Automação

Como criar propostas comerciais automáticas no Google Docs com Apps Script

Sim. É possível criar propostas comerciais automaticamente usando um modelo do Google Docs, dados organizados em um objeto no Apps Script e uma cópia que pode virar PDF no Google Drive. O fluxo serve para freelancers, agências, prestadores de serviço e pequenas empresas que repetem o mesmo documento toda semana.

A ideia não é deixar a proposta com cara de robô. Você prepara o texto uma vez, marca os campos variáveis com chaves como {{CLIENTE}} e deixa o script preencher nome, serviço, valor, prazo e validade. O ganho real está em eliminar o copia e cola — justamente a parte mais propensa a erro.

Fluxo visual de automação que transforma dados e um modelo em proposta comercial em PDF
O fluxo básico: dados, modelo, cópia personalizada e PDF.

O que você vai montar

O tutorial cria quatro etapas:

  • um modelo no Google Docs com campos entre chaves;
  • um objeto no Apps Script com os dados do cliente;
  • uma cópia do modelo preenchida e salva no Drive;
  • um arquivo PDF opcional para enviar por e-mail ou compartilhar.

O Apps Script pode criar e modificar documentos do Google Docs e também conversar com outros serviços do Google. Na prática, ele funciona como uma pequena ponte entre o formulário que recebe os dados e o documento que você entrega.

Se seus dados já estão em uma planilha, você pode substituir o objeto de exemplo por uma leitura de linha. O JSMS já explicou como criar um controle de pedidos com Google Forms e Google Sheets; a mesma lógica pode alimentar propostas, desde que cada coluna tenha um significado claro.

1. Prepare o modelo no Google Docs

Crie um documento e escreva a proposta normalmente. Depois, troque os trechos variáveis pelos marcadores abaixo:

PROPOSTA COMERCIAL

Cliente: {{CLIENTE}}
Serviço: {{SERVICO}}
Valor: {{VALOR}}
Prazo: {{PRAZO}}
Validade: {{VALIDADE}}

Olá, {{CLIENTE}}.

Esta proposta contempla {{SERVICO}} pelo valor de {{VALOR}},
com entrega prevista em {{PRAZO}}.

Não use o mesmo marcador para duas coisas diferentes. {{PRAZO}} deve significar prazo em todas as aparições. Se precisar de uma data de início e uma data de entrega, crie {{DATA_INICIO}} e {{DATA_ENTREGA}}.

Copie o ID do documento-modelo. Ele é a sequência de letras e números entre /d/ e /edit no endereço do Google Docs. Deixe o modelo em uma pasta que a conta que executará o script consiga acessar.

2. Cole o script no Apps Script

Abra Extensões > Apps Script no Google Docs ou entre em script.google.com. Apague o código inicial e cole o exemplo abaixo. Troque COLE_O_ID_DO_MODELO pelo ID real do documento.

const MODELO_ID = 'COLE_O_ID_DO_MODELO';
const PASTA_ID = ''; // opcional: ID da pasta de destino

function criarProposta() {
  const dados = {
    cliente: 'Empresa Exemplo',
    servico: 'Configuração de automações para atendimento',
    valor: 'R$ 1.500,00',
    prazo: '10 dias úteis',
    validade: '15 dias'
  };

  const modelo = DriveApp.getFileById(MODELO_ID);
  const nome = `Proposta - ${dados.cliente}`;
  const copia = PASTA_ID
    ? modelo.makeCopy(nome, DriveApp.getFolderById(PASTA_ID))
    : modelo.makeCopy(nome);

  const documento = DocumentApp.openById(copia.getId());
  const corpo = documento.getBody();

  substituir(corpo, '{{CLIENTE}}', dados.cliente);
  substituir(corpo, '{{SERVICO}}', dados.servico);
  substituir(corpo, '{{VALOR}}', dados.valor);
  substituir(corpo, '{{PRAZO}}', dados.prazo);
  substituir(corpo, '{{VALIDADE}}', dados.validade);

  documento.saveAndClose();

  const pdf = copia.getAs(MimeType.PDF);
  const pdfCriado = PASTA_ID
    ? DriveApp.getFolderById(PASTA_ID).createFile(pdf).setName(`${nome}.pdf`)
    : DriveApp.createFile(pdf).setName(`${nome}.pdf`);

  Logger.log(`Documento: ${copia.getUrl()}`);
  Logger.log(`PDF: ${pdfCriado.getUrl()}`);
}

function substituir(corpo, marcador, valor) {
  const padrao = marcador.replace(/[{}]/g, '\\$&');
  const seguro = String(valor).replace(/\\/g, '\\\\').replace(/\$/g, '\\$');
  corpo.replaceText(padrao, seguro);
}

A função substituir escapa o marcador antes de enviá-lo ao replaceText. Isso importa porque o método trabalha com padrões de expressão regular; as chaves do marcador não devem ser interpretadas como parte da regra.

3. Execute e confira o resultado

  1. Clique em Salvar e escolha a função criarProposta.
  2. Pressione Executar.
  3. Na primeira vez, revise as permissões solicitadas para acessar Docs e Drive.
  4. Abra os links exibidos em Executions ou no registro da execução.

Antes de enviar o PDF, confira nome do cliente, valor, prazo, validade, moeda e dados bancários. Automação reduz erro de digitação, mas não substitui a revisão comercial. Um documento bonito com o preço errado continua sendo um problema — só que agora foi gerado mais rápido.

Como preencher a proposta com dados de uma planilha

Depois que o exemplo funcionar, a próxima evolução é buscar uma linha no Google Sheets. O princípio é simples: cada coluna vira uma propriedade do objeto dados. Por exemplo, a coluna “Cliente” alimenta dados.cliente e a coluna “Valor” alimenta dados.valor.

Não comece lendo a planilha inteira. Para um primeiro fluxo, use uma linha selecionada ou um identificador de proposta. Isso evita gerar dezenas de PDFs por acidente e facilita o teste. Quando a rotina estiver estável, você pode marcar cada linha como “Gerada” para não processá-la novamente.

Como automatizar a execução

Para gerar propostas em horários definidos, crie um acionador instalado no Apps Script. Ele pode chamar uma função em resposta a eventos ou em um horário programado, como explica a documentação de installable triggers do Google.

O caminho mais seguro é abrir Triggers > Add Trigger, selecionar a função e escolher o tipo de acionador. Comece com execução manual, valide o documento e só depois programe o fluxo. Se a proposta depender de aprovação humana, deixe uma coluna ou etapa explícita para “Aprovada” antes de criar o PDF final.

Limitações e erros comuns

O marcador não foi substituído

Verifique se o texto do modelo é exatamente igual ao código. Espaços, acentos e chaves diferentes já bastam para o script não encontrar o campo. Também confira se o marcador está no corpo do documento; este exemplo não percorre cabeçalho, rodapé ou tabelas de forma especial.

O script pede autorização de novo

Isso pode acontecer quando você muda os serviços usados ou executa o projeto com outra conta. Não aceite uma permissão no automático: confira se o projeto é seu e se os acessos pedidos fazem sentido.

A execução parou

O Apps Script tem cotas diárias e limitações de serviço. Um fluxo pequeno normalmente não esbarra nelas, mas muitas propostas, arquivos grandes, acionadores repetidos e envios de e-mail podem fazer a execução parar. Consulte a página oficial antes de transformar o script em uma operação de alto volume.

O PDF saiu com dados antigos

O documento precisa ser fechado com saveAndClose() antes da conversão. Também evite gerar o PDF imediatamente depois de uma alteração complexa no modelo sem testar a sequência; primeiro confirme que a cópia do Google Docs já mostra os dados novos.

Vale a pena usar esse fluxo?

Para quem produz poucas propostas por mês, o ganho maior é a padronização. Para quem repete dezenas de documentos, a economia de tempo pode justificar a automação — desde que exista um processo para revisar valores, aprovar condições e controlar versões.

O Google Docs com Apps Script é uma boa porta de entrada porque mantém o modelo editável e não exige que você construa um sistema inteiro. Ele deixa de ser a melhor escolha quando você precisa de assinatura eletrônica nativa, regras complexas de preço, controle financeiro, permissões avançadas ou grande volume. Nesse ponto, um CRM ou software de propostas pode fazer mais sentido.

Perguntas frequentes

Preciso pagar por um sistema de propostas?

Não para reproduzir este fluxo básico, mas a conta Google e os limites disponíveis para o Apps Script continuam valendo. Recursos como assinatura eletrônica, cobrança e trilha de auditoria podem exigir outras ferramentas.

Posso enviar o PDF automaticamente por e-mail?

Sim. Você pode anexar o arquivo criado a um envio com o serviço de e-mail do Apps Script. Faça isso apenas depois de validar destinatário, assunto e aprovação, porque um acionador mal configurado pode disparar mensagens erradas.

O modelo pode ter tabelas e logotipo?

Sim. O modelo continua sendo um Google Docs comum. O cuidado é testar o resultado depois das substituições, principalmente quando um campo variável aparece dentro de uma tabela ou perto de uma quebra de página.


Este conteúdo usa documentação oficial do Google como referência. Interfaces, limites e permissões podem mudar; consulte as páginas oficiais antes de colocar o fluxo em produção.