Formar expresiones

Puede utilizar expresiones en una encuesta para controlar el comportamiento predeterminado de las preguntas. Puede ocultar o mostrar una pregunta o un grupo de preguntas en función de las respuestas anteriores con la ayuda de expresiones en la columna relevant. Cuando se oculta una pregunta con una expresión en la columna correspondiente, no se envían datos para la pregunta.

Nota:

En la aplicación de campo ArcGIS Survey123, si se introduce una respuesta para una pregunta que se oculta más tarde debido a una expresión relevante, la respuesta se borra. Si la pregunta vuelve a ser relevante, se debe introducir una nueva respuesta. En la aplicación web, la respuesta no se borra, de modo que si la pregunta vuelve a ser relevante, se usa la respuesta introducida anteriormente.

También puede aplicar expresiones a la columna readonly, que pueden deshabilitar la escritura en una pregunta o un grupo en función del resultado de la expresión. La columna required también admite expresiones, lo cual permite a la exigir solicitar al usuario responder a la pregunta solamente en condiciones concretas.

Nota:

No se admiten expresiones de solo lectura en la aplicación web.

Siempre se debe hacer referencia a las preguntas anteriores en las expresiones con el formato ${field_name}.

Visibilidad de las preguntas

Puede ocultar una pregunta de la vista con una expresión con la columna body::esri:visible. Esta columna oculta la pregunta si la expresión que contiene no se evalúa como true, pero sigue manteniendo el contenido de la pregunta. Por ejemplo, la expresión ${edit_location}='yes' hace que la pregunta solo se muestre si la pregunta edit_location se ha define como yes.

Tiene un comportamiento similar al de la columna relevant y las dos columnas ocultan una pregunta hasta que la expresión de la columna se evalúa como true. La diferencia principal es que body::esri:visible no borra el valor de una pregunta oculta por la expresión y sigue enviando el valor oculto a la capa de entidades. Esto hace que body::esri:visible sea útil si el contenido predeterminado del campo debe ser necesario, por ejemplo, un valor predeterminado o un cálculo.

También puede controlar la visibilidad de las preguntas utilizando el tipo de pregunta oculta y la apariencia oculta.

Nota:

Las preguntas de imagen y audio no admiten que la columna body::esri:visible las oculte.

Expresiones sencillas

La mejor forma de usar una de estas expresiones es modificar el comportamiento o la visibilidad de la pregunta, a menos que previamente se haya dado una respuesta concreta. Por ejemplo, la siguiente expresión comprueba si la respuesta a la pregunta anterior tiene el valor true:

${previous_question} = 'true'

Este ejemplo comprueba si la respuesta a la pregunta anterior es mayor que o igual a 100:

${previous_question} < 100

El tipo de pregunta select_multiple guarda sus valores de un modo distinto a otros tipos de preguntas, con cada respuesta activada introducida en el orden en que se seleccionó y separada de las demás por comas. Por ejemplo, al seleccionar las respuestas A y B en ese orden, las respuestas aparecerán como A,B. Para usar una pregunta select_multiple como parte de una expresión, debe usar la función selected. El siguiente ejemplo comprueba si el usuario respondió a la pregunta anterior con A y funciona independientemente del resto de respuestas elegidas:

selected(${previous_question}, 'A')

La función count-selected cuenta el número de opciones que se han seleccionado en una pregunta select_multiple y proporciona un número para utilizarlo como operador. El siguiente ejemplo comprueba si en la pregunta anterior se han seleccionado más de dos opciones:

count-selected(${previous_question}) > 2

Puede usar la función count-selected como restricción en las preguntas image o file con la apariencia multiline para controlar el número de archivos enviados.

Expresiones matemáticas

El siguiente ejemplo combina varios operadores y preguntas:

${previous_question} + ${other_previous_question} <= 100

Cuando use operadores matemáticos, es posible que sea necesario convertir valores en números. En el ejemplo anterior, se supone que previous_question y other_previous_question son enteros o decimales; sin embargo, si los tipos de preguntas son cadenas de caracteres, conviértalos de la siguiente forma:

int(${previous_question}) + int(${other_previous_question}) <= 100

También puede aplicar expresiones matemáticas en preguntas date, que se guardan como tiempo Unix, el número de milisegundos transcurridos desde el 1 de enero de 1970. La siguiente expresión solo revela una pregunta si la respuesta a la pregunta anterior es anterior en más de dos semanas a la fecha actual:

if( ${previous_question}='',false,today() - ${previous_question} > 1000*60*60*24*15)

Expresiones regulares

Puede usar expresiones regulares en las columnas relevant, readonly y required para modificar el comportamiento de una pregunta, a menos que la cadena proporcionada por otra pregunta esté en un formato concreto. El siguiente ejemplo, cuando se coloca en la columna relevant, solamente muestra una pregunta si se ha respondido a otra pregunta usando únicamente letras:

regex(${question},'[A-Za-z]')

Para obtener más información sobre las expresiones regulares, consulte Fórmulas.