parfaitform ← Voltar para o parfaitform
Integrações · Google Sheets

Enviar respostas direto para uma planilha do Google

O parfaitform não tem uma conexão nativa com o Google Drive — mas qualquer formulário pode enviar cada resposta, em tempo real, para uma planilha na sua conta Google, usando um pequeno script gratuito do Google (Apps Script) como ponte. Leva uns 5 minutos para configurar, uma vez só.

i Como funciona

O parfaitform já tem um campo "Webhook URL" nas configurações de cada formulário: sempre que alguém responde, ele envia os dados como uma requisição POST em JSON para essa URL. O script abaixo cria uma URL desse tipo, hospedada gratuitamente pelo próprio Google, que recebe essa requisição e escreve uma nova linha na sua planilha — criando colunas automaticamente com o texto de cada pergunta do formulário.

1 Crie a planilha

Acesse sheets.new para criar uma planilha em branco no seu Google Drive. Dê um nome a ela (ex: "Respostas — Pesquisa de satisfação"). Não precisa criar cabeçalhos manualmente — o script faz isso sozinho na primeira resposta recebida.

2 Abra o editor de Apps Script

Dentro da planilha, vá em Extensões → Apps Script. Isso abre um editor de código em uma nova aba, já vinculado a essa planilha específica.

3 Apague o conteúdo padrão e cole este código

O editor abre com uma função vazia (function myFunction() {}) — apague tudo e cole o código abaixo. Depois, salve (ícone de disquete ou Ctrl/Cmd + S).

Code.gs
function doPost(e) {
  var lock = LockService.getScriptLock();
  lock.waitLock(10000);
  try {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var body = JSON.parse(e.postData.contents);
    var answers = body.answers || {};

    var lastCol = sheet.getLastColumn();
    var headers = lastCol > 0 ? sheet.getRange(1, 1, 1, lastCol).getValues()[0] : [];
    if (headers.length === 0) {
      headers = ['Data de envio', 'Formulário'];
      sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
    }

    // Cria uma coluna nova para cada pergunta que ainda não apareceu antes.
    Object.keys(answers).forEach(function (label) {
      if (headers.indexOf(label) === -1) {
        headers.push(label);
        sheet.getRange(1, headers.length, 1, 1).setValue(label);
      }
    });

    var row = headers.map(function (col) {
      if (col === 'Data de envio') return new Date();
      if (col === 'Formulário') return body.form || '';
      return answers[col] || '';
    });

    sheet.appendRow(row);
    return ContentService.createTextOutput(JSON.stringify({ ok: true }))
      .setMimeType(ContentService.MimeType.JSON);
  } catch (err) {
    return ContentService.createTextOutput(JSON.stringify({ ok: false, error: String(err) }))
      .setMimeType(ContentService.MimeType.JSON);
  } finally {
    lock.releaseLock();
  }
}

4 Publique como aplicativo da Web

No canto superior direito do editor, clique em Implantar → Nova implantação.

  • Clique no ícone de engrenagem ao lado de "Selecionar tipo" e escolha App da Web.
  • Em "Executar como", deixe Eu (seu e-mail).
  • Em "Quem pode acessar", escolha Qualquer pessoa — isso não dá acesso à sua planilha para ninguém, só permite que o parfaitform envie dados para essa URL específica.
  • Clique em Implantar. O Google vai pedir para autorizar o script — é a sua própria conta autorizando o próprio script, confirme normalmente.
  • Copie a URL do app da Web gerada (termina em /exec).
Atualizou o código depois? Sempre que editar o script, crie uma nova implantação (ou implante uma nova versão) para as mudanças valerem — salvar o arquivo sozinho não atualiza a URL já publicada.

5 Conecte no parfaitform

Volte para o construtor do seu formulário, cole essa URL no campo "Webhook URL" e gere (ou salve) o link normalmente. Pronto — cada nova resposta aparece como uma linha na planilha em poucos segundos, com uma coluna para cada pergunta do formulário.