CÓMO

Cambiar el formato de los resultados de las preguntas de selección múltiple en Survey123

Last Published: February 10, 2025

Descripción

Seleccionar varias preguntas en Survey123 almacena los nombres de las opciones seleccionadas como una cadena de caractres CSV, es decir, Opción1,Opción2,Opción3,Opción4. Si bien es útil almacenar los nombres únicos de las opciones, a veces queremos acceder fácilmente a una lista de las etiquetas de las opciones seleccionadas. Por ejemplo, los nombres de las plantas son Acacia, Banksia, Callistemon y Eucalyptus.

Tenemos más flexibilidad y libertad con las convenciones de nomenclatura al elegir etiquetas en comparación con los nombres. Para mejorar la legibilidad, la cadena CSV también debe reformatearse para incluir espacios entre las opciones, lo que lleva mucho tiempo cuando se hace a mano. Es posible crear un nuevo objeto en un XLSForm para cambiar el formato de las opciones seleccionadas usando la etiqueta en lugar del nombre. Podemos hacer esto combinando una serie de fórmulas en el campo Cálculo. En este ejemplo se utilizan los nombres científicos y comunes de algunas plantas australianas.

Solución o solución alternativa

  1. Cree un tipo de pregunta Seleccionar múltiples con una lista de opciones asociada. Asegúrese de tener en cuenta la cantidad de opciones de elección; esto es necesario para la segunda parte. También podemos elegir aquí hacer que la pregunta sea obligatoria o no. En este caso, no necesitaremos una respuesta.

table1-au-plants-800px.png

  1. Cree una pregunta de texto para almacenar las etiquetas reformateadas. La apariencia se puede configurar como oculta si no queremos que los encuestados vean la lista. Para completar esta pregunta de texto, combinamos las fórmulas de declaración selected-at(), jr:choice-name(), concat() e if .

table2-au-plants-800px.png

Crear el cálculo

Como combinaremos múltiples funciones, es una buena idea comenzar en el punto final y seguir hacia fuera. Para empezar, usaremos las funciones jr:choice-name() y selected-at():

  • La función jr:choice-name() para una pregunta determinada devuelve la etiqueta asociada con el nombre de la elección.
  • La función selected-at() debe usarse para extraer la etiqueta de las respuestas individuales.
  • La pregunta debe estar definida dentro de comillas.
jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}')

Podemos usar la función concat() para unir todas las etiquetas de todas las respuestas seleccionadas en una cadena, con la puntuación deseada.

concat(jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), ', ', jr:choice-name(selected-at(${PlantSpeciesCSV},1),  '${PlantSpeciesCSV}'), ', ', jr:choice-name(selected-at(${PlantSpeciesCSV},2), '${PlantSpeciesCSV}'), ', and ',  jr:choice-name(selected-at(${PlantSpeciesCSV},3), '${PlantSpeciesCSV}'))

A partir de aquí, necesitamos crear una serie de declaraciones if anidadas para filtrar las etiquetas por el número de respuestas elegidas. Establecemos la condición para que cada declaración if devuelva true si tenemos un valor o una opción en el número dado. El recuento comienza desde cero, por lo que '3' devolverá la cuarta opción seleccionada. Por ejemplo, si queremos mostrar las etiquetas cuando hemos seleccionado tres opciones, establecemos la condición en selected-at(${PlantSpeciesCSV},2). Si esta condición devuelve TRUE, entonces se genera nuestra cadena de caracteres concatenada, es decir, cepillo de botella Gold Dust Wattle, Silver Banksia y Willow. Si la condición es false, probamos la siguiente declaración if. Esto continúa hasta que la condición devuelve TRUE. Si no se cumple ninguna de las condiciones, podemos especificar que se devuelva una declaración personalizada como No Plants Observed , lo que nos indica que no se seleccionó ninguna opción.

if(selected-at($PlantSpeciesCSV},3),concat(jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), ', ', 
jr:choice-name(selected-at(${PlantSpeciesCSV},1), '${PlantSpeciesCSV}'), ', ', jr:choice-name(selected-at(${PlantSpeciesCSV},2), '${PlantSpeciesCSV}'), ', and ', jr:choice-name(selected-at(${PlantSpeciesCSV},3),
'${PlantSpeciesCSV}')), if(selected-at($PlantSpeciesCSV},2),concat(jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), ', ',
jr:choice-name(selected-at(${PlantSpeciesCSV},1), '${PlantSpeciesCSV}'), 'and ', jr:choice-name(selected-at
(${PlantSpeciesCSV},2), '${PlantSpeciesCSV}')), if(selected-at($PlantSpeciesCSV},1),concat(jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), 'and ',
jr:choice-name(selected-at(${PlantSpeciesCSV},1), '${PlantSpeciesCSV}')), if(selected-at($PlantSpeciesCSV},0),jr:choice-name(selected-at(${PlantSpeciesCSV},0), '${PlantSpeciesCSV}'), 'No Plants Observed'))))

Un par de cosas a tener en cuenta:

  • Tenga en cuenta cuántos corchetes está abriendo. Pueden surgir problemas con pares de corchetes no coincidentes que pueden ser difíciles de localizar, especialmente si tiene muchas opciones de elección.
  • Las instrucciones IF deben comenzar con la instancia en la que se realiza el mayor número de selecciones y descender en cascada a solo una. De lo contrario, la primera instrucción IF devolverá true y la cadena de salida solo contendrá la etiqueta de la primera selección, incluso si se realizaron varias selecciones.

Id. de artículo: 000031066

Recibir notificaciones y encontrar soluciones a problemas nuevos o comunes

Obtenga respuestas resumidas y soluciones de vídeo de nuestro nuevo chatbot de IA.

Descargar la aplicación de soporte de Esri

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Descargar la aplicación de soporte de Esri

Ir a opciones de descarga