x

Capítulos principais

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Guia de início rápido - LimeSurvey 3.0+
  3. Instalação - LimeSurvey CE
  4. Como criar um bom inquérito (guia)
  5. Iniciando
  6. Administrando o LimeSurvey
  7. Questionários - introdução
  8. Configurações do questionário
  9. Menu da pesquisa
  10. Estrutura da pesquisa
  11. Perguntas - introdução
  12. Grupos de perguntas - introdução
  13. Questionários - gerenciamento
  14. Opções da barra de ferramentas do questionário
  15. Questionário multilíngue
  16. ExpressionScript Engine - Guia de início rápido
  17. Recursos avançados e não categorizados
  18. FAQ geral
  19. Solução de problemas
  20. Soluções alternativas
  21. Licença
  22. Registro de mudanças da versão
  23. Plugins
 Actions

Inquéritos de exemplo do ExpressionScript

From LimeSurvey Manual

Esta página pode ter sido traduzida automaticamente e conter erros. Ver o original em inglês · Melhorar esta tradução
This page is a translated version of the page ExpressionScript sample surveys and the translation is 100% complete.


Introdução

A melhor maneira de aprender a usar o ExpressionScript é experimentar exemplos funcionais e modificá-los de acordo com as suas necessidades.

Abaixo você encontra um conjunto de inquéritos de exemplo que demonstram (e permitem testar) como o EM pode ser usado para aprimorar o seu inquérito. Esses inquéritos estão na pasta /docs/demosurveys da distribuição.


Relevância, personalização e equações

Visão geral

O exemplo a seguir calcula o IMC (Índice de Massa Corporal) de cada respondente. Veja abaixo os recursos demonstrados neste exemplo.

Recursos do EM demonstrados

  1. Relevância - suporte a uma lógica condicional poderosa;
  2. Piping / Personalização - oferece a capacidade de inserir ou personalizar respostas e metadados das perguntas;
  3. Personalização dinâmica - observe que os relatórios mudam na própria página à medida que você responde às perguntas.
  4. Micropersonalização - personalização condicional dentro de frases e relatórios usando instruções if()
  5. Equações - um novo tipo de pergunta que permite fazer cálculos e armazenar os resultados na base de dados, mesmo que o cálculo esteja oculto
  6. Validação condicional - os critérios de validação, como o valor mínimo permitido, podem ser condicionais, por exemplo, com base em equações.


Capturas de tela

Este exemplo calcula o Índice de Massa Corporal, um cálculo baseado no seu peso e altura para determinar se você está abaixo do peso, com peso normal, com sobrepeso ou obeso. Observe que, inicialmente, você vê apenas as quatro perguntas obrigatórias:



Depois de inserir as suas informações (e escolher se deseja usar unidades métricas ou não métricas), você vê um relatório personalizado que resume o que foi informado e indica a sua situação de peso:



Aqui está um exemplo diferente, usando unidades não métricas para mostrar como o resultado muda dinamicamente:



Existem perguntas do tipo Equação ocultas, em nível interno, que convertem os dados para o sistema métrico (se necessário) e armazenam na base de dados a altura, o peso, o IMC e a situação de peso em unidades métricas, sem a necessidade de JavaScript personalizado.

Nos próximos exemplos, você pode ver como usar funções matemáticas e outras funções em relatórios personalizados. É assim que a página aparece antes de você inserir qualquer dado. Há lógica condicional para mostrar células em branco se nenhum dado (ou dados não numéricos) for inserido, em vez de mostrar "NaN" ou "Divide by Zero".



À medida que os números são inseridos, o relatório na página muda para mostrar o cálculo que está sendo realizado e o seu resultado.



Há muitos outros exemplos neste inquérito de exemplo. Por exemplo, a captura de tela abaixo mostra uma das dezenas de maneiras de preencher a página Relevância Dinâmica. Como o texto de ajuda indica, experimente idades diferentes e, principalmente, combinações ilógicas de respostas para ver as mensagens divertidas geradas na parte inferior. Observe também que, se você disser que tem mais de um filho, a mensagem dirá "Espero que você goste de brincar com seus X filhos", em vez de "Espero que você goste de brincar com seu filho". Isso mostra como você pode microperosonalizar frases com facilidade para que correspondam ao gênero e/ou ao número dos seus participantes. Você pode até conjugar verbos e flexionar substantivos facilmente com base no gênero e no número.



Download

Para acessar o inquérito de exemplo, clique na seguinte hiperligação: LS3_em_tailoring.zip.

Censo de exemplo

Visão geral

Este é um exemplo de censo que pergunta quantas pessoas moram na sua casa.

Ele demonstra como a relevância em nível de grupo pode facilitar a implementação de um "loop" de perguntas. Depois de criar o grupo para a Pessoa 1, exportei o grupo. Como usei nomes de variáveis qcode, como p1_name, em vez do código SGQA, pude usar um editor de texto para editar e reimportar o grupo rapidamente várias vezes (por exemplo, levei cerca de 10 segundos para editar e reimportar cada grupo repetido, garantindo que todas as variáveis tivessem nomes exclusivos e que a lógica em nível de grupo estivesse correta).

Você também pode usar o recurso Copiar questão, mas ele não será tão rápido quanto a opção sugerida acima.

Isto também mostra como evitar que a mensagem de conclusão apareça até que o inquérito esteja realmente concluído (por exemplo, quando todos os grupos necessários forem preenchidos).


Recursos do EM demonstrados

  1. Relevância em nível de grupo - Os grupos de acompanhamento (Pessoa 1-5) são exibidos somente até o número de coabitantes informado;
  2. Personalização (tailoring) - O relatório final resume os dados demográficos de cada coabitante;
  3. Exibição progressiva de perguntas - Seja no modo grupo a grupo ou tudo em um, as perguntas seguintes só são exibidas assim que as anteriores forem respondidas.


Capturas de tela

O inquérito gera um relatório personalizado que mostra os dados demográficos do número de coabitantes informado:



Se você alternar para o modo pergunta a pergunta, verá que o índice personaliza as perguntas. Como o usuário informou que a pessoa é uma mulher, a pergunta é "Qual é o nome dela?". E, como respondemos "Mary", a pergunta seguinte é "Quantos anos tem Mary?".



Download

Para baixar o exemplo de inquérito, clique aqui: LS3_group_relevance.zip.


Filtros de matriz em cascata

Visão geral

Este inquérito baseia-se no design de um inquérito cedido por cortesia da Joy Lane Research, LLC.


Capturas de tela

A seguir, observe que:

  • Q02 mostra apenas o conjunto de produtos marcados em Q01 (usando array_filter)
  • Q02 também mostra "Outro produto", o texto digitado no campo "Outro eletrônico" em Q01
  • Q04 mostra apenas os produtos de Q02 que foram marcados (de modo que o filtro da matriz funciona em cascata)
  • Q05 mostra apenas os produtos de Q02 que não foram marcados em Q02 (usando um array_filter_exclude em cascata)




Download

Clique na hiperligação a seguir para baixar o exemplo acima: Exemplo de inquérito LS2_cascading_array_filter.


Piping/Personalização usando todos os tipos de pergunta e atributos

Visão geral

Se você tem dúvidas sobre como nomear suas variáveis (SGQA vs. Qcodes), não está sozinho. Embora a documentação principal descreva como compor os nomes de variáveis Qcode, nada melhor do que ver isso em uma demonstração funcional. Este inquérito mostra como você pode acessar os atributos da questão e as respostas usando o ExpressionScript.


Para este exemplo, recomendamos desativar o editor HTML integrado (ou alterná-lo para o modo pop-up) ao editar este inquérito. O editor HTML pode levar um minuto ou mais para renderizar os relatórios HTML extensos no modo de edição.


Conteúdo

  • Exemplos de todos os tipos de pergunta
  • Todos os tipos de pergunta que podem usar "outros" estão incluídos, para que você veja como isso afeta a nomenclatura das variáveis
  • Valores padrão para todos os tipos de pergunta que aceitam valores padrão
  • Personalização (tailoring) - Relatórios dentro e fora da página que mostram os 16 sufixos de notação de ponto do EM disponíveis.
  • Esses relatórios mostram todos os dados inseridos até o momento (mostrando como você poderia gerar seus próprios relatórios imprimíveis para os usuários, em vez da tela de impressão de respostas)
  • Nomenclatura correta de todas as variáveis em Qcode e SGQA


Capturas de tela

Este é um inquérito enorme, por isso optamos por não incluir capturas de tela. Em vez disso, baixe-o e experimente.


Download

Clique na hiperligação a seguir para baixar o inquérito: LS3_EM_question_attributes.lss

Validação tradicional, reinventada

Visão geral

Este exemplo demonstra todos os tipos de validação que utilizam expressões e como eles afetam cada um dos tipos de pergunta que oferecem suporte à validação. Em muitos casos, as dicas de validação começam ocultas e só aparecem se uma pergunta não atender aos critérios de validação (desaparecendo novamente assim que a pergunta passar a atender a esses critérios).


Tipos de validação demonstrados

  1. min_num_value_n - valor mínimo para uma resposta
  2. max_num_value_n - valor máximo para uma resposta
  3. min_answers - número mínimo de respostas exigidas
  4. max_answers - número máximo de respostas permitidas
  5. multiflexible_min - valor mínimo permitido para uma resposta (para o tipo de pergunta de números multiflexíveis)
  6. multiflexible_max - valor máximo permitido para uma resposta (para o tipo de pergunta de números multiflexíveis)
  7. min_num_value - soma mínima permitida de todas as respostas da pergunta
  8. max_num_value - soma máxima permitida de todas as respostas da pergunta
  9. equals_num_value - a soma de todas as respostas da pergunta deve ser igual a este valor
  10. validation - esta é a validação por expressão regular da pergunta - pode ser aplicada a células individuais


Capturas de tela

Com os novos estilos CSS, cada tipo de validação exibe uma dica separada. Se forem exibidas, elas podem ser ocultadas por meio da opção hide_tip. A opção padrão é exibi-las em fonte vermelha se a pergunta não atender aos critérios de validação e em verde se atender:



O participante não pode enviar uma página com erros de validação. Ele será avisado imediatamente se inserir informações incorretas:



A validação pode ser aplicada a células individuais de uma matriz, como neste exemplo, em que validações por expressão regular garantem que cada entrada seja um número de telefone dos EUA corretamente formatado, incluindo o código de área.



Download

Para baixar o exemplo acima, clique na seguinte hiperligação: LS3_Validation_tests.zip.


Equações de validação

Visão geral

Às vezes, você precisa de uma validação personalizada que não pode ser obtida com os critérios tradicionais de mínimo/máximo. Para isso, será necessário usar as opções em_validation_q e em_validation_sq, que permitem construir equações de validação complexas no nível da pergunta e da pergunta secundária, respectivamente.


No nível da pergunta secundária, também introduzimos a variável "this", que facilita a validação de cada célula de uma matriz sem a necessidade de conhecer o nome da variável. Para mais detalhes, clique aqui.


Recursos do EM demonstrados

  1. em_validation_q - esta é uma equação que determina se a pergunta inteira é válida
  2. em_validation_q_tip - esta é a mensagem a ser exibida se a pergunta não atender aos critérios de em_validation_q
  3. em_validation_sq - esta é a equação que determina se cada pergunta secundária (célula da matriz) é válida
  4. em_validation_sq_tip - esta é a mensagem a ser exibida se alguma das perguntas secundárias for inválida.

Em geral, quando em_validation_sq é utilizado, se alguma célula for inválida, a cor de fundo dessa célula fica vermelha para indicar que há um erro.


Capturas de tela


Esta pergunta garante que você insira as idades dos seus filhos em ordem decrescente, aplicando esta equação de validação:

q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4





No exemplo abaixo, a validação garante que no máximo 3 perguntas sejam respondidas em cada linha, aplicando esta equação de validação:

(sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= 3) && (sum(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= 3) && (sum(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) <= 3)

Você também pode escrever da seguinte forma; o LimeSurvey a converte automaticamente, em tempo de execução, para a expressão listada acima.

(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)



Download

Para baixar o exemplo de inquérito usado nos exemplos acima, clique na seguinte hiperligação: ls2_test_em_sq_validation.lss.


Relevância de perguntas secundárias

Visão geral

Isto mostra como array_filter e os critérios de validação podem interagir. Nas validações que se aplicam a somas, apenas os valores relevantes (visíveis) são considerados.


Recursos do EM demonstrados

  1. array_filter
  2. array_filter_exclude
  3. min_num_value
  4. max_num_value
  5. equals_num_value

Também mostra o relatório dinâmico do número de perguntas respondidas nas perguntas principais.


Capturas de tela

Alterar o número de linhas visíveis muda dinamicamente a soma. Marcar uma pergunta secundária como irrelevante não apaga o seu valor. Em vez disso, se ela for irrelevante, os seus valores não contribuem para nenhuma equação.



Observe o que acontece quando marcamos a "Quinta pergunta secundária" da primeira pergunta "Quais linhas devem aparecer abaixo". Note que a soma da segunda pergunta "Digite alguns números" agora é 5. Embora a pergunta secundária 5 dessa pergunta ainda tenha o valor 14 (por exemplo, se você desmarcar a quinta pergunta secundária, verá novamente o valor 14), esse valor não contribui para a soma, pois atualmente é irrelevante. Todos os dados irrelevantes são apagados (definidos como NULL no banco de dados) ao enviar, mas permanecem disponíveis na página caso os participantes queiram ou precisem mudar de ideia sobre as respostas.



Download

Para baixar o nosso exemplo, clique aqui: ls2_subquestion_relevance.lss.


Usando a vírgula como separador decimal (ponto decimal)

Visão geral

O ExpressionScript garante que apenas números válidos possam ser digitados em campos numéricos. Se você digitar um número inválido, será avisado de que há algo errado (por exemplo, no caso do tema fruity, toda a pergunta fica "em vermelho").

Observe que os valores numéricos são sempre convertidos para usar o ponto como separador decimal no banco de dados. Dessa forma, as análises estatísticas funcionam corretamente.

Para alterar o separador decimal, acesse as opções de Elementos de texto localizadas na aba Configurações e procure a funcionalidade Marca decimal.


Para obter mais informações sobre o que é um separador decimal, clique [https://en.wikipedia.org/wiki/Radix_point


Tipos de pergunta que usam separador decimal

  1. Entrada numérica [N]
  2. Entrada numérica múltipla [K]
  3. Matriz (Números) [:]
  4. Matriz (Textos) [;], ao usar o atributo numbers_only
  5. Lista (Rádio) [L], ao usar o atributo other_numbers_only
  6. Texto livre curto [S], ao usar o atributo numbers_only
  7. Texto curto múltiplo [Q], ao usar o atributo numbers_only
  8. Múltipla escolha [M], ao usar o atributo other_numbers_only
  9. Múltipla escolha com comentário [P], ao usar o atributo other_numbers_only


Capturas de tela

Você pode observar nas capturas de tela abaixo que a vírgula pode ser usada como separador decimal.



Download

Para baixar o exemplo acima, clique na seguinte hiperligação: ls2_comma_as_radix_separator.lss.


Grupos de randomização

Visão geral

Este inquérito demonstra como usar o atributo random_group.

Se este atributo for usado, a ordem das perguntas será randomizada cada vez que você iniciar o inquérito. No entanto, depois que o inquérito é iniciado, a ordem de randomização permanece fixa, mesmo que você mude de idioma.


Capturas de tela

Vamos analisar juntos o exemplo abaixo. A primeira pergunta aleatória da página será Q1, Q4 ou Q7. A segunda pergunta randomizada da página será Q2, Q5 ou Q8.



Esta é a randomização gerada na primeira vez que testei este inquérito.



Uma randomização diferente foi gerada na segunda vez que testei o inquérito.



Porém, quando mudei para o francês (sem reiniciar o inquérito), a ordem de randomização permaneceu intacta.



Download

Para baixar o exemplo acima, clique na seguinte hiperligação: Randomization_Group_Test.lss


Fazer aleatoriamente uma pergunta por grupo

Visão geral

Este inquérito mostra como configurar um inquérito para exibir aleatoriamente uma pergunta por grupo. Ele contém 5 grupos de 6 perguntas cada. Logo no início, no Grupo 0, cinco perguntas ocultas do tipo Equação, chamadas ask1-ask5, são preenchidas. Cada uma tem o valor {floor(rand(1,6.9999))} no campo de texto da pergunta, o que significa que as variáveis ask1-ask5 terão, cada uma, um valor entre 1 e 6. Em seguida, cada pergunta do grupo tem uma equação de relevância como "ask1==N", em que N é a N-ésima pergunta do grupo (assim, a terceira pergunta do grupo 1 tem a equação de relevância "ask1==3").

Este inquérito funciona igualmente bem nos modos todo o inquérito em uma página, grupo por grupo e pergunta por pergunta. Como a randomização é definida no primeiro grupo, e esse grupo fica efetivamente oculto (pois todas as perguntas ask1-ask5 estão ocultas), a randomização permanece a mesma para o participante; mas cada participante diferente terá uma randomização distinta.


Recursos demonstrados

  1. Tipo de pergunta Equação
  2. Funções de randomização
  3. Função condicional (if)


Capturas de tela

Este é o Group0, que usa o tipo de pergunta Equação para selecionar valores aleatórios de 1 a 6 para cada grupo (exceto o último grupo, que tem apenas 4 perguntas). Observe que a função "if()" primeiro verifica se ask1 já foi definida e, em caso afirmativo, usa esse valor. Se o valor não tiver sido definido, ela usa um valor aleatório para definir o valor de ask1.



Este grupo mostra como a variável (ask4) do Group0 é usada para controlar qual pergunta fica visível dentro do quarto grupo.



Download

Para baixar o exemplo de inquérito acima, clique aqui: Exemplo de inquérito com perguntas aleatórias dentro de um grupo.


Fazer aleatoriamente um número específico de perguntas em um grupo (um subconjunto das perguntas)

  Isto se aplica somente a todas as perguntas aleatórias de um grupo e apenas se o formato Grupo por grupo ou Todas em uma página for usado.



Visão geral

Este inquérito mostra como apresentar um subconjunto aleatório de perguntas em um grupo. Por exemplo, mostrar 5 perguntas aleatórias de um total de 10 perguntas localizadas em um grupo.

O inquérito tem um grupo com 10 perguntas. Todas as perguntas recebem o mesmo nome do grupo de randomização. Como resultado, elas serão exibidas em ordem aleatória ao carregar a página. Cada pergunta recebe uma equação de relevância na qual a soma do "relevanceStatus" de todas as outras perguntas do grupo é menor que o número de perguntas que você deseja mostrar. Como o relevanceStatus é atribuído à medida que as perguntas são exibidas, isso totaliza, na prática, o número de perguntas anteriores.

Assim, em nosso exemplo de 5 de 10, a equação para a Q1 seria:

sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

Para a Q2, seria:

sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

E assim por diante...


Recursos demonstrados

  1. variável relevanceStatus
  2. Randomização

Download

Para baixar o exemplo acima, clique na seguinte hiperligação: Exemplo de inquérito com 5 perguntas aleatórias de 10.

Avaliação de uma lista de produtos informada pelo usuário

Visão geral

O exemplo abaixo mostra como você pode pedir aos usuários que listem um conjunto de produtos do seu interesse e, em seguida, avaliem esses produtos.


Recursos do ExpressionScript demonstrados

  1. Personalização de respostas - ao avaliar produtos, os rótulos vêm do campo de comentário da pergunta de múltipla escolha anterior
  2. Personalização de escalas - muitas opções avançadas de perguntas, como os títulos das escalas, também podem ser personalizadas.


Capturas de tela

Esta imagem mostra que, como apenas os produtos 1, 3 e 5 foram selecionados, somente esses 3 são exibidos (usando o atributo array_filter). Além disso, os rótulos das linhas na segunda pergunta são os números dos produtos (se nada for informado no campo de comentário) ou o conteúdo dos campos de comentário.



Esta imagem mostra como as respostas personalizadas são especificadas:



Este é o arquivo Show Logic dessa pergunta, que nos permite verificar se a lógica condicional funciona como desejado (por exemplo, para ver se há erros de sintaxe):



A imagem seguinte mostra um grupo no qual você especifica uma escala de avaliação de 5 pontos (opções 1-5), o título da escala e os produtos que deseja avaliar. A última pergunta mostra que cada parte da pergunta em array pode ser personalizada:



A imagem seguinte mostra a visualização do arquivo de lógica da última pergunta. Como você pode observar, as subperguntas, as respostas e os cabeçalhos das escalas podem ser personalizados.


Download

Para baixar o exemplo de inquérito acima, clique na seguinte hiperligação: Exemplo de inquérito de avaliação de lista de produtos informada pelo usuário.