Google Sheets + cargas

Formulario HTML para Google Sheets con carga de archivos.

Una configuración práctica para sitios estáticos que necesitan filas de hojas de cálculo y archivos adjuntos sin Apps Script, Zapier, código de backend personalizado ni sistemas de almacenamiento de objetos.

La versión más simple de este flujo de trabajo parece obvia: publicar un formulario en Google Sheets e incluir un archivo de entrada. En la práctica, la parte difícil no son los campos de texto. Recibe una carga de varias partes desde un navegador, decide si el archivo está permitido, lo escanea, lo almacena y escribe una referencia útil del archivo adjunto en la misma fila que el envío.

Es por eso que un sitio estático simple generalmente necesita un backend de formularios entre el navegador y Google Sheets. El formulario HTML sigue siendo simple. El backend posee las partes que no deberían estar en el código del frontend: manejo de carga, controles de abuso, normalización de campos, reintentos, OAuth y el anexo final de Hojas. FormsFort admite este flujo de trabajo en Pro con carga de archivos con escaneo y anexo de Google Sheets. Para patrones adyacentes, consulte las guías para backend de formularios con Google Sheets, a backend de formularios con carga de archivos, y un Backend de formulario HTML.

Por qué Google Sheets no puede ser el endpoint de carga

Google Sheets can store text in cells, formulas, links, and spreadsheet data. It is not a public multipart/form-data receiver for arbitrary browser uploads. A static HTML form submits either URL-encoded fields or multipart parts. The spreadsheet itself has no place to terminate that HTTP request, parse the file stream, validate the file, or return a user-safe response.

Puedes hacer que Apps Script actúe como una pequeña aplicación web, pero eso te lleva a un frágil término medio. Ahora necesita analizar los cuerpos de las solicitudes, manejar la creación de archivos de Drive, administrar los permisos, evitar la filtración de URL de secuencias de comandos, mantener la coherencia de las escrituras en las hojas de cálculo y decidir qué sucede cuando un archivo es demasiado grande o un usuario lo envía dos veces. Apps Script es útil para la automatización interna. Se vuelve complicado cuando se convierte en la ventaja de carga pública para un cliente potencial de producción, una solicitud, un soporte o un formulario de admisión.

La automatización estilo Zapier tiene una compensación similar. Puede conectar productos, pero agrega otro sistema, otra superficie de falla y otro lugar donde el manejo de archivos adjuntos puede no coincidir con los nombres de campo o las reglas de seguridad. Si su sitio ya tiene un formulario HTML simple, un backend de formularios es el límite más claro.

La arquitectura que funciona

El navegador publica el formulario completo en FormsFort. FormsFort valida la clave de acceso, rechaza el spam honeypot, recibe el archivo, aplica la configuración de carga, escanea el archivo adjunto, normaliza los campos y agrega una fila a la hoja de trabajo conectada a su formulario. La fila puede contener columnas normales como nombre, correo electrónico, función, presupuesto y mensaje, además de una columna de adjunto que apunta al archivo cargado o contiene metadatos del adjunto.

Capa Responsabilidad
Página HTML Collect fields, include access_key, set enctype, and show the form UI.
FormsFort Reciba datos de varias partes, escanee cargas, aplique límites, normalice campos y adjúntelos a Google Sheets.
Google Sheets Almacene la fila final para revisión, filtrado, generación de informes o transferencia al resto de su equipo.

Ejemplo de formulario HTML para copiar y pegar

This example is realistic for a hiring, partnership, or sales intake flow. The important attributes are method="POST" and enctype="multipart/form-data". The accept attribute guides the browser file picker, while the backend settings enforce the actual MIME and size rules.

<form action="https://api.formsfort.com/submit" method="POST" enctype="multipart/form-data">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
  <input type="hidden" name="subject" value="New application from website" />
  <input type="hidden" name="redirect" value="https://example.com/thanks" />

  <label for="first_name">First name</label>
  <input id="first_name" name="first_name" type="text" autocomplete="given-name" required />

  <label for="last_name">Last name</label>
  <input id="last_name" name="last_name" type="text" autocomplete="family-name" required />

  <label for="email">Email</label>
  <input id="email" name="email" type="email" autocomplete="email" required />

  <label for="company">Company</label>
  <input id="company" name="company" type="text" autocomplete="organization" />

  <label for="role">Role or project type</label>
  <select id="role" name="role" required>
    <option value="">Choose one</option>
    <option value="sales-lead">Sales lead</option>
    <option value="job-application">Job application</option>
    <option value="partner-application">Partner application</option>
  </select>

  <label for="budget">Budget range</label>
  <select id="budget" name="budget">
    <option value="">Not sure yet</option>
    <option value="under-5k">Under $5,000</option>
    <option value="5k-25k">$5,000-$25,000</option>
    <option value="25k-plus">$25,000+</option>
  </select>

  <label for="message">What should we know?</label>
  <textarea id="message" name="message" rows="6" required></textarea>

  <label for="attachment">Resume, brief, or supporting file</label>
  <input
    id="attachment"
    name="attachment"
    type="file"
    accept=".pdf,.doc,.docx,image/png,image/jpeg"
  />

  <input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off" />
  <button type="submit">Submit application</button>
</form>

Keep the field names boring and stable. The names are what your backend receives and what you map into columns. If you rename company to organization_name in HTML, update the worksheet mapping at the same time.

Lista de verificación de configuración

Utilice esta lista de verificación antes de enviar tráfico de producción al formulario:

  1. Cree un formulario FormsFort en panel y copie la clave de acceso público.
  2. Habilitar cargas para el formulario. Elija el tamaño máximo, los tipos MIME permitidos y el comportamiento de escaneo.
  3. Conecta tu cuenta de Google desde el área de integraciones de formularios.
  4. Elija la hoja de cálculo y la hoja de trabajo donde se deben agregar las filas.
  5. Asigne campos de formulario a columnas: marca de tiempo, nombre, apellido, correo electrónico, empresa, función, presupuesto, mensaje y archivo adjunto.
  6. Add the HTML form to your page with enctype="multipart/form-data", access_key, honeypot, and redirect fields.
  7. Envíe un envío de prueba con un pequeño PDF o imagen.
  8. Verifique que la hoja de trabajo reciba una fila y que el enlace del archivo adjunto o los metadatos estén presentes en la columna esperada.

Las funciones de carga y Google Sheets son parte de Pro. Marque precios antes de planificar un lanzamiento de producción, especialmente si este formulario recibirá solicitudes o documentos de clientes de alto valor.

Qué asignar a Google Sheets

Una buena hoja de trabajo es útil sin necesidad de abrir todos los archivos adjuntos. Comience con columnas que permitan a una persona clasificar el envío rápidamente: marca de tiempo, formulario de origen, nombre, correo electrónico, empresa, categoría, resumen del mensaje, enlace del archivo adjunto, nombre del archivo adjunto, tipo MIME del archivo adjunto y estado del escaneo. Si está recopilando solicitudes, agregue función, ubicación, URL de cartera y consentimiento. Si está recopilando oportunidades de ventas, agregue el tamaño de la empresa, el presupuesto, el cronograma y la fuente de referencia.

No confíe en la carga del archivo como única fuente de contexto. Una fila que solo dice "ver archivo adjunto" es difícil de filtrar, ordenar o enrutar. El formulario HTML debe recopilar los campos estructurados que su equipo necesita, mientras que el archivo adjunto admite la fila.

Cuándo esto es mejor que Apps Script

Apps Script es atractivo porque se encuentra cerca de Sheets. También es fácil subestimarlo. Una vez que las cargas entran en escena, su secuencia de comandos se vuelve responsable del manejo de solicitudes públicas, permisos de escritura de Drive, límites de contenido, nombres de archivos, páginas de error, comportamiento de envío duplicado y revisión de seguridad. También necesita una forma de mantener los secretos y el comportamiento de OAuth fuera del código de interfaz.

Un backend de formularios le brinda un contrato más claro. Su sitio estático envía HTML estándar. FormsFort es dueño del trabajo arriesgado. Google Sheets sigue siendo el lugar donde su equipo revisa y organiza los envíos aceptados. Esa división es especialmente útil para sitios estáticos, compilaciones de Jamstack, páginas de destino y páginas CMS en las que no desea ejecutar un servicio de backend personalizado.

Solución de problemas

Problema Qué verificar
El archivo no está adjunto Confirme que el formulario tiene método="POST" y enctype="multipart/form-data". Sin enctype, el navegador envía sólo campos normales y el cuerpo del archivo nunca llega al backend.
La carga se rechaza Verifique el tamaño del archivo y los tipos MIME permitidos en la configuración del formulario. Los filtros de aceptación del navegador ayudan a los usuarios a elegir archivos, pero el backend aún aplica la política real.
Las filas dejaron de aparecer Vuelva a conectar Google Sheets OAuth y luego envíe un envío de prueba. Los cambios de contraseña, el acceso revocado o los cambios en la política del espacio de trabajo pueden invalidar la conexión.
Los valores aparecen en las columnas incorrectas Revise la asignación de campo a columna después de cambiar el nombre de las entradas o editar la fila del encabezado de la hoja de trabajo. Los nombres de campos como first_name y resume deben coincidir con la asignación esperada.
Errores de permisos de hojas de cálculo Asegúrate de que la cuenta de Google conectada aún tenga acceso de edición a la hoja de cálculo y a la hoja de trabajo. Los cambios de propiedad de Shared Drive pueden interrumpir los permisos para agregar archivos.
Filas duplicadas Deshabilite el botón de enviar después del primer clic o muestre un estado de carga. Los dobles clics y los reintentos del navegador pueden generar envíos repetidos.

Ejemplos relacionados

Si todavía está dando forma a la interfaz, comience con Ejemplos de formularios HTML para patrones de campos y Ejemplos de FormsFort para redireccionamientos, Ajax, captcha y fragmentos avanzados. Luego combine la configuración de carga y Google Sheets que se describe aquí para el flujo de trabajo de producción.

Preguntas frecuentes

Preguntas comunes.

¿Puede Google Sheets recibir carga de archivos directamente desde un formulario HTML?

No. Google Sheets es una aplicación de hoja de cálculo, no un endpoint de carga de formularios de varias partes. Un backend debe recibir el archivo, validarlo, almacenarlo y agregar un enlace o metadatos a la hoja.

¿Necesito Apps Script para un formulario HTML en Google Sheets con la carga de archivos?

No. Apps Script puede agregar filas, pero la carga de archivos desde formularios HTML públicos requiere análisis adicional, almacenamiento en Drive, permisos, manejo de errores y controles de abuso. FormsFort maneja el flujo de carga y adición de hojas para formularios Pro.

¿Dónde aparece el archivo adjunto en Google Sheets?

La fila de la hoja debe contener los campos de envío normalizados más un enlace de archivo adjunto o una columna de metadatos de archivo según su asignación. Envíe un envío de prueba para verificar el resultado exacto de la hoja de trabajo.

¿Qué plan de FormsFort admite este flujo de trabajo?

Utilice Pro cuando necesite cargar archivos con escaneo y adjuntar Google Sheets. Revise los detalles del plan actual en la página de precios antes de habilitar los formularios de producción.

Enviar cargas a Google Sheets sin crear el backend.

Cree el formulario, habilite las cargas, conecte Google Sheets y pruebe la fila completa antes del lanzamiento.

Abrir panel Ver precios