Watch at EaseHistorias. Respuestas. Perspectiva.

Tecnología · GUÍA PRÁCTICA

Respuestas de casillas en Google Forms con comas: recupera las opciones exactas

Elige entre el CSV nativo de Forms y los arrays de respuestas originales, y comprueba cada etiqueta seleccionada antes de filtrar o contar.

Ilustración editorial original que muestra dos arrays diferentes de selecciones de casillas convertidos en una misma celda unida por comas.
Ilustración editorial original de un ejemplo sintético probado localmente; no representa una exportación de Google Forms ni respuestas de usuarios. Watch at Ease

Si una respuesta de casillas de Google Forms se divide en tareas incorrectas o produce recuentos sospechosos, comprueba cómo llegaron las selecciones a la tabla. Una celda que une los valores con comas puede ocultar el límite entre dos opciones y la puntuación dentro de una misma opción. Añadir otra regla de división puede producir una tabla ordenada cuyo significado sea incorrecto.

Empieza por la descarga CSV del propio formulario y examina su representación real. Cuando un delimitador no permita conservar las diferencias que necesitas, vuelve a los arrays de respuestas originales. El objetivo es disponer de una lista exacta de etiquetas seleccionadas para cada envío, con un punto claro en el que detenerse si la información original ya no está disponible.

Comprueba un envío original antes de modificar la tabla

Abre el formulario original con permisos de edición y ve a Responses → Individual para consultar los envíos por separado. Elige uno que incluya una coma dentro de una etiqueta seleccionada y anota las opciones completas. Si corresponde, elige también un envío con etiquetas que se solapen, como Email y Email newsletter. Así tendrás una referencia original con la que comparar la tabla que vas a crear. Conserva la exportación actual sin cambios mientras pruebas con una copia.

Comprueba el tipo de pregunta. Esta guía trata una pregunta de casillas ordinaria, en la que se pueden elegir varias opciones para una misma pregunta. Una cuadrícula de casillas tiene una estructura por filas y otra forma de array. Decide también si necesitas recuentos por opción, listas de envíos que contengan una opción o un resumen visual. Si el resumen que ya ofrece Forms responde a tu pregunta, exportar puede añadir trabajo innecesario.

Prueba el CSV nativo de Forms antes de crear una exportación propia

Dentro del propio formulario, usa Responses → More → Download responses (.csv). Es una ruta diferente de descargar como CSV la hoja de Google Sheets vinculada. La documentación de integración de Displayr, actualizada en febrero de 2026, describe los valores de respuesta múltiple de la descarga nativa como separados por punto y coma; una respuesta existente en Stack Overflow señala la misma diferencia. Por tanto, una coma dentro de una etiqueta no convierte automáticamente ese archivo nativo en inutilizable.

Importa el CSV exterior con un lector que interprete correctamente ese formato y después examina el campo de casillas del envío conocido. Las comillas alrededor de un campo CSV protegen el campo completo; por sí solas no especifican cómo están codificadas las distintas opciones en su interior. Confirma el separador interno y las reglas de escape del archivo real. Antes de adoptar una regla de división, prueba etiquetas que contengan ese separador y respuestas de texto libre de Other. Si las opciones exactas obtenidas coinciden con el original, utiliza esta ruta más sencilla. No sustituyas una exportación que funciona por un script solo porque la hoja vinculada resulte incómoda. Si el texto libre de Other puede contener ese separador y no puedes establecer una regla de escape fiable, utiliza los arrays originales.

Entiende por qué dividir y buscar texto pueden producir errores distintos

Considera las cuatro etiquetas permitidas ["A", "A, B", "B, C", "C"]. Las selecciones ["A, B", "C"] y ["A", "B, C"] se convierten ambas en A, B, C cuando se unen con una coma y un espacio. Ni siquiera conocer la lista completa de opciones permite decidir entre esos dos resultados. Es un ejemplo sintético de representación, no una afirmación sobre todos los formatos de exportación de Google.

Las búsquedas de texto generan otro error. Si los valores seleccionados son ["Email newsletter", "Food, drinks"], buscar Email dentro de la cadena unida cuenta una opción que no se seleccionó. Dividir esa cadena por coma y espacio y después comparar valores completos hace que se pierda Food, drinks. Ejecutamos ambos contraejemplos localmente. La consecuencia práctica es establecer los límites de cada selección antes de contar; alternar entre coincidencias de subcadenas y divisiones no establece esos límites.

Recupera los arrays seleccionados desde el formulario original

La referencia de Apps Script de Google define la respuesta de un CheckboxItem ordinario como un String[] con las opciones seleccionadas. Un ejemplo completo ya publicado en Stack Overflow lee getResponses(), recorre getItemResponses() para cada respuesta, selecciona los elementos CHECKBOX y llama a getResponse(). Si utilizas Apps Script, empieza desde el menú More → Apps Script del formulario para que el script quede vinculado a él; se necesitan permisos de edición. El ejemplo completo figura entre las fuentes y Google documenta el método de la API.

Dentro de ese bucle de casillas, conserva el array que devuelve itemResponse.getResponse(). Comprueba Array.isArray(values) antes de tratar values como un array y utiliza JSON.stringify(values) cuando necesites una representación textual que mantenga separadas las cadenas. Unir el array como texto corriente y tratar de dividirlo después anula ese propósito. Guarda el ID de la respuesta y el ID del elemento junto a los valores; el título de una pregunta es una etiqueta, y la posición del elemento es otra propiedad. Google también advierte que el orden del array de casillas puede variar, por lo que no debes interpretarlo como el orden en que alguien hizo clic.

Usa la API oficial de respuestas cuando necesites páginas estructuradas

La API REST de Forms ofrece otra ruta documentada sin inventar un delimitador interno. En la referencia oficial de forms.responses.list, abre Try it, utiliza una cuenta autorizada para leer las respuestas del formulario e introduce el ID que aparece en la URL de edición. Guarda el JSON devuelto como datos de respuesta, sin confundirlo con un token OAuth o una cabecera de la solicitud. El método forms.get obtiene por separado la definición del formulario, para que puedas identificar el questionId de la pregunta de casillas.

Para esa pregunta, cada valor elegido es una entrada independiente en textAnswers.answers. Conserva responseId, la correspondencia de questionId y el ID del formulario junto a las páginas guardadas; el método list no repite formId dentro de cada objeto de respuesta devuelto. Esos ID de preguntas de REST pertenecen a su propio modelo de API. No los sustituyas por los ID de elementos de Apps Script procedentes de otra exportación.

Una primera solicitud correcta no demuestra que la exportación esté completa. Si aparece nextPageToken, solicita la siguiente página con ese token, el mismo formulario y el mismo filtro. Continúa hasta que deje de aparecer. El pageSize solicitado es un máximo y el servicio puede devolver menos respuestas. Conserva todas las páginas y comprueba los ID de respuesta distintos antes de considerar completa la colección; esta guía no afirma haber exportado datos de una cuenta real ni haber obtenido una instantánea congelada mediante una transacción.

Cuenta pertenencias exactas y distingue las respuestas ausentes

Para una respuesta de casillas ordinaria ya obtenida como array, values.includes("Food, drinks") pregunta si se seleccionó esa etiqueta completa. No coincide con una parte de otra etiqueta. En la representación REST, extrae primero las cadenas de textAnswers.answers de la respuesta elegida con .map(x => x.value), y después aplica la misma comprobación exacta. Cuenta esa etiqueta como máximo una vez por envío; no conviertas una respuesta con varias selecciones en varias personas distintas.

Una respuesta ausente necesita un tratamiento propio. Apps Script omite los elementos sin responder de este tipo en getItemResponses(), de modo que emparejar las respuestas por su posición en el array puede asignar una respuesta posterior a la pregunta equivocada. Empareja el ID del elemento o de la pregunta. Mantén una respuesta de casillas ausente separada de una selección explícita y elige deliberadamente el denominador de cualquier porcentaje: la ausencia no indica si la pregunta se dejó sin contestar, se evitó por una bifurcación o se añadió más tarde. Estas exportaciones tampoco recuperan definiciones históricas de preguntas eliminadas.

Verifica las selecciones, además del número total de filas

Compara las etiquetas completas del envío original con el array recuperado o el campo interpretado del CSV nativo. Incluye una etiqueta con puntuación, una etiqueta corta contenida en otra más larga, un valor de texto libre si el formulario lo permite y una pregunta opcional sin responder. Después verifica una etiqueta seleccionada y otra no seleccionada mediante el recuento por pertenencia exacta. El número total de filas puede ser correcto aunque las selecciones dentro de ellas sean incorrectas.

Nuestras diez comprobaciones locales en Node 24.22.1 cubrieron colisiones de delimitadores, los dos errores de recuento, conversiones de ida y vuelta de JSON en UTF-8, ID de elementos separados, elementos ausentes y tratamiento seguro del texto. Utilizaron objetos de prueba locales con la estructura documentada de Forms. No ejecutamos Google Forms, la autorización de Apps Script, una exportación CSV real ni API Explorer dentro de una cuenta con sesión iniciada. En un formulario activo, registra la hora de exportación o el intervalo de respuestas elegido y ten en cuenta los nuevos envíos antes de comparar los totales.

Si solo queda una celda ambigua, conserva la incertidumbre

Si las respuestas originales del formulario ya no están disponibles, una lista de opciones conocida puede permitir a veces una única interpretación. No puede garantizarla: el ejemplo A, B, C admite dos selecciones válidas. El texto libre de Other hace especialmente frágil la suposición de que un delimitador está reservado. Marca las celdas sin resolver para su revisión y pide al propietario las respuestas originales u otra exportación cuyos límites puedas verificar.

Cambiar comas por puntos y comas después de aplanar la información no la recupera. Tampoco lo hace añadir comillas alrededor de toda la celda. Conserva el archivo de origen y las suposiciones utilizadas para cualquier conversión aprobada. Antes de emplear los resultados para asignar tareas o comunicar recuentos, necesitas un conjunto trazable de valores seleccionados exactos o un registro claramente identificado como pendiente de resolver.

Diagrama editorial original que compara un CSV nativo de Forms comprobado, arrays de respuestas originales y texto aplanado sin resolver.
Ilustración editorial original: elige una representación que conserve las etiquetas seleccionadas y verifica el resultado frente al envío original. Watch at Ease