¿Cómo puedo obtener Hojas de cálculo de Google para tratar mis cadenas enviadas por formulario como texto sin formato y preservar los ceros a la izquierda?

8

Tengo Formularios de Google donde los usuarios ingresan información, algunos de los cuales contienen ceros a la izquierda (por ejemplo, códigos postales, números de identificación).

Sin embargo, cuando estos datos se guardan en la hoja de Google, no los trata como texto sin formato y elimina el cero. Los campos del formulario son campos de texto sin validación.

He intentado formatear el rango de celdas que contienen estos valores como texto sin formato, pero parece que Sheets no establece el formato como texto sin formato a menos que ya haya texto en una celda. Por lo tanto, puedo formatear una columna como texto sin formato, enviar el formulario y el cero inicial aún se eliminará.

Intenté escribir un script de aplicaciones para lidiar con esto, pero no hay una buena manera de implementarlo en los usuarios que lo necesitarían.

¿Cómo puedo evitar esto sin tener que dar instrucciones a los usuarios para que antepongan una sola cita a su entrada de formulario? Esto es algo tan pequeño, pero no puedo encontrar una buena solución simple para lo que parece ser un problema común. Si no puedo hacer que esto funcione, es posible que tenga que abandonar los formularios / hojas de Google por completo.

res
fuente
1
Bienvenido a las aplicaciones web ! Buena pregunta, lo he editado un poco para que sea más fácil de leer. ¿Has visto cómo puedo hacer que Google Docs deje de formatear una respuesta de formulario como fecha?
Vidar S. Ramdal
1
Sí, y como se señaló anteriormente, he intentado lo que sugiere la "respuesta aceptada", pero es para una versión anterior de las hojas y eso ya no funciona.
res

Respuestas:

3

Parte de mi respuesta sería: este es un error conocido (los envíos de formularios recibidos recientemente no respetan el formato de las columnas en las que están aterrizando, como lo hicieron en la versión anterior de las hojas).

Dependiendo de lo que esté haciendo con los datos posteriormente, otra opción sería reproducir los envíos de formularios en otra hoja, con el formato correcto. Por ejemplo, si la columna E contiene códigos postales que deben tener 5 dígitos e incluir ceros a la izquierda (si es necesario), entonces podría usar:

=ArrayFormula(TEXT('Form Responses'!E:E,"00000"))

en otra hoja

Sin embargo, también necesitaría traer todas sus otras columnas. Sin complicarse demasiado, esto puede lograrse razonablemente fácilmente en la nueva versión de Hojas de cálculo, y formatear las columnas como se desee, con (por ejemplo):

=QUERY('Form Responses'!A:G,"select * format E '00000'",1)

AdamL
fuente
2

Acabo de enfrentar este problema, pero desafortunadamente no sé la cantidad de dígitos que espero, así que no sé cuántos ceros pueden faltar. Afortunadamente, pensé en esto antes de enviar el formulario, si ya tiene respuestas, esto no ayudará (a menos que lo envíe de nuevo).

Para resolver este problema tengo:

  1. Establezca el tipo de pregunta en "Texto"
  2. En "Configuración avanzada" he seleccionado "Expresión regular"
  3. En el siguiente cuadro desplegable, seleccioné "Partidos"
  4. En el cuadro de texto he ingresado ^\[\d+\]$

Esta expresión regular obliga al usuario a ingresar un corchete abierto al comienzo de su respuesta que luego debe ser seguido por al menos un dígito y debe terminar con un corchete cerrado. Por ejemplo, [0021314] sería una entrada válida. Tenga en cuenta que esto solo permitirá dígitos, si solo desea forzar los corchetes, puede usarlos ^\[.+\]$en su lugar.

En la hoja, esto se mostrará como [0021314], por lo que deberá eliminar los corchetes que se pueden hacer con una fórmula como =mid(A1,2,len(A1)-2)donde A1 es la celda que contiene [0021314]. El relleno automático y el formato de las celdas como texto sin formato deberían hacer el resto de lo que necesitará.

También puede cambiar la expresión regular para obligar a los usuarios a ingresar una comilla simple al comienzo de su entrada

Rob C
fuente
0

Puede que no sea posible una forma larga y sin aliento de decir "No sé cómo" junto con "parece" (pero es una verdadera pena):

Lo mejor (pero débil) que puedo manejar es esperar la entrada (y, por lo tanto, también la salida) de un dígito a la vez usando una escala de 0 a 9 para cada dígito.

nueces
fuente
0

Las soluciones propuestas aquí y en otros hilos funcionan solo para números con un número fijo de dígitos. Como 5 para el código postal considerado anteriormente.

Tengo que mantener el cero inicial de los números de teléfono belgas.
Los
teléfonos fijos belgas tienen la estructura 025382172 (9 dígitos) Mientras que los teléfonos móviles tienen la estructura 0475123456 (10 dígitos)

Pensé que había encontrado una solución para duplicar los datos en una nueva pestaña. Para hacer esto, uso dos matrices separadas para cargar por lotes grupos de columnas.

Una primera matriz copia todas las columnas hasta la columna de número de teléfono G, no incluida. =ARRAYFORMULA('Form Responses'!A2:F302)
Una segunda matriz copia todas las columnas después de la columna G del número de teléfono hasta la última.=ARRAYFORMULA('Form Responses'!H2:P302)

En la columna del número de teléfono tengo una fórmula simple para agregar un cero antes del valor copiado: =("0"&'Form Responses'!G2)

... desafortunadamente, solo funciona en modo estático.
En el modo dinámico, cuando ingresa una nueva fila de un formulario de Google, la fórmula en la columna G del número de teléfono está en mal estado, incluso si no se supone que las matrices afecten a esta columna.

En realidad, la fórmula =("0"&'Form Responses'!G2)cambia a la siguiente fila que está vacía, =("0"&'Form Responses'!G3)dejando la celda con un valor frustrante de 0.

Continuaré mis investigaciones volviendo a una sola matriz para todas las columnas en un bloque, agregando una columna de número de teléfono duplicado a la derecha fuera de la zona de la matriz y simplemente ingrese la siguiente fórmula: =("0"&G3)... curiosidad por saber si funcionará ... Si lo hace, enmascararé la columna del número de teléfono "nativo" y mostraré solo el procesado (desafortunadamente no en el lugar correcto de la página).

Pierre Becquart
fuente
La solución descrita ESTÁ FUNCIONANDO, siempre que la columna del número de teléfono convertido NO esté comprimida entre dos matrices. Tiene que estar fuera del área donde los datos se agregan automáticamente. Ya sea a la derecha o a la izquierda. ¡HURRA! Amicalement de Belgique. Pierre
Pierre Becquart
0

Esta es una publicación anterior, pero recomendaría lo siguiente ...

En la pestaña de resultados, A1:

=QUERY('Form Responses'!A:F)

En G1:

=ArrayFormula(IF(ROW('Form Responses'!G:G)=1, 'Form Responses'!G1, IF('Form Responses'!G:G="", "", "0"&'Form Responses'!G:G)))

En H1:

=QUERY('Form Responses'!H:P)

Se puede agregar un enfoque similar para modificar los datos de las columnas que necesiten modificación.

Erik Tyler
fuente
0

Resolví mi problema de código postal que comienza con un "0" de esta manera ... Resalte la columna, vaya a la pestaña de formato, haga clic en "número", "más formatos" y luego "formatos de números personalizados" Dado que mis códigos postales son solo 5 dígitos escribí "00000" y presioné aplicar. ¡Y funcionó!

Pam Vienneau
fuente