Actions

アンケートロジックの確認 - 高度

From LimeSurvey Manual

Revision as of 14:18, 6 January 2021 by Bravehorse (talk | contribs) (Created page with "==ロジックのカスケード==")


概要

複雑なアンケートを作成し、簡単に維持するための重要な機能として、アンケートロジックの確認があります。

アンケートを開始する前の開発やテストの段階で、アンケートのロジックを検証することは非常に重要です。複雑な出現条件式、文言調整、検証式を作成するならなおさらで、アンケートが問題なく実行できるように確認する必要があります。

この機能を使用すると、アンケート、グループ、質問の正確性を素早く検証することができます。アンケート関連設定の下にあるトップバーメニューオプションからアクセスできます。ツールメニューから利用できます。



上図からわかるように、このオプションは、アンケートの中で使用されている言語ごとに4回実行することができます。

説明

アンケートロジックの確認から、個々の質問やグループに設定したすべての項目(名前、テキスト、ヘルプ、条件/出現条件、検証ルール、既定値、サブ質問、回答など)が便利な表形式で表示されます。エラーがあればハイライトされ、質問やグループのID(または式の中で使われている変数)をクリックすると、ブラウザのタブが新たに開かれ、編集することができます。これにより、エラーを手早く修正し、アンケートを開始する前に正確性を確認するためのロジックチェックページが更新されます。

The display is also designed to be be readable by researchers and study sponsors so that they can validate the accuracy of the survey design and logic. Checking the survey logic updates the cache for all expressions used within an active survey.

以下の列があります。

  • # - グループ、質問の順番を示します。番号は0から始まります。
  • 名前 [ID] - グループ/質問/サブ質問のコード。これらのコードは、内の変数として使用できます。IDは、質問ID(QID)またはグループID(GID)です。このフィールドには、質問タイプ(複数選択[M]など)も表示されます。


式内で使用できる変数の詳細については、こちらのウィキサブセクションを参照してください。


  • Relevance [Validation] (Default) - shows the following:
    • Relevance - the syntax-highlighted relevance equation for the question or group. If it is always true (to be shown in any scenario), the value will be 1.
    • Validation - ExpressionScript automatically generates the validation equation based upon the selected question attributes (e.g., min/max number of answers, min/max/equals sum values, min/max individual values or regular expression validation). This section shows the generated validation equation so that you can detect if there are any errors (such as undefined variables).
    • Default - if the question has a default value, it is shown here, syntax-highlighted (since the default could be an expression).
  • Text [Help] (Tip) - shows the following:
    • Text - the text of the group, question, subquestion, or answer. It is syntax-highlighted to show any embedded tailoring, thus letting you verify that you have declared all the variables you plan to use in the tailoring.
    • Help - this shows the help text for the question, also syntax-highlighted.
    • Tip - this shows the internally generated validation tip, based upon the question attributes. This same tip is used in all survey styles, plus in the printable survey and data entry screens.
    • Question Attributes - this shows a table of all relevant question attributes for this question. Attributes that might be equations are syntax-highlighted so that you can validate their accuracy.

行は以下のルールによって色づけされています。

  • グループ - 背景がライトグレー
  • 質問 - 背景がライトグリーン
  • サブ質問 - 背景が淡い黄色
  • 回答 - 背景が白

Answers have an additional attribute in the Relevance column:

  • Value - this is the default internal value used by calculations. If you are using Assessments, this will be the assessment value. Otherwise, this will be the same as the answer name.


The survey description, welcome and end messages, end URL, Survey data policy notice and label are listed within the Cgeck survey Logic (above the table) if their corresponding fields are not empty!

使い方

At the top of the page, there is a summary message. If all is well, it will say "No syntax errors detected in this survey", or "This group" or "This question", "by itself, does not contain any syntax errors". If the opposite is true, it will say "X questions have syntax errors that need to be corrected".

Each question that has syntax errors gets the background of its leftmost column (i.e. #) color-coded red. Also, a warning stating the number of minimum errors of a question will be displayed under the Name [ID] column. The following errors are common:

  • Undefined variable - if you have not defined all of your variables, or mistyped array_filter (or different sets of answer options for array_filter), then some of your validation questions will show errors. Undefined variables are shown in red text, boxed with a red line.
  • Bad syntax - as you start to use relevance equations, you may use too many or too few parentheses. Such syntax problems are highlighted and boxed in red. If you hover the mouse over any such red-boxed text, a tool-tip will describe the error.


未定義の変数

If undefined variables are used, the respective variable name will be color-coded in red and surrounded by a red line. If you hover your mouse over the variable name, it will say "undefined variable":



  Attention : LimeSurveyでは、同じ質問コードを使用した質問を作成できません。ただし、すでに定義されている質問と同じ質問コードを使用する質問グループまたは質問をインポートすると、アンケートの中で同様の質問コードが含まれることがあります。質問IDは異なるため、質問をインポートすることはできます。ただし、(RまたはSPSSで)さらに分析するため、アンケート結果をエクスポートする場合、質問コードが変数と見なされるので注意してください。



}}

不正な構文

式にまつわる間違いのほとんどは、誤った構文に関連しています。これは、アンケート管理者は、しばしば中括弧を追加しわすれたり、正しい括弧の使用しなかったり、間違って式を使用したりするためです。



構文ハイライトの使用例を示します。


Bad custom JavaScript

The JavaScript errors will also be highlighted in the survey logic check:



編集と検証を手早く行う

All of the syntax-highlighted text has tooltips embedded, which are clickable:

  1. Tooltips
    • Functions - hovering the mouse lets you see the purpose and syntax definition of the function;
    • Variable Names - hovering the mouse lets you see the position (group, question sequence), question text, and allowable answers for the question.
  2. Actions
    • Variable Names - clicking on the variable name opens a new window that allows you to edit the question. This makes it easy to navigate and verify logic - simply keep clicking on variable names of relevance or validation criteria for the question to see where they come from and how they are used.


次の例は、ExpressionScriptサンプルアンケートから取得したものです。アンケート、説明、ダウンロードのスクリーンショットがあります。


ボディー・マス・インデックス

本例のスクリーンショットです。

This is the question-reorder view of the Body Mass Index calculation. You can see the relevance equations for weight, height, and BMI under the Question column:



For a better survey overview, check the survey logic page:



This survey example is also a good example of nested if() statements to generate the "weightstatus".


ロジックのカスケード

Here are screenshots of this example.

It shows the subquestion validation logic that is automatically generated when you use array_filter and array_filter_exclude. This example also shows how you can substitute the tailored "Other" value (the answer for Q02_other is Q01_other).



Q05 in this example shows simultaneous use of array_filter and array_filter_exclude on Q01 and Q02, respectively. This example demonstrates cascading array_filter capabilities. Note that one of the main reasons for showing the question and subquestion level validation criteria is to help ensure you have not made any typos in specifying the array_filter or array_filter_exclude variable names (or in case you use different variable names for your list of filtered subquestions). If you have such typos, all the invalid variable names will appear in red indicating that they are undefined, letting you quickly fix the problem.



Dynamic relevance

This example demonstrates dynamic cascading relevance logic to control display of question visibility. You can download this example here.

Also note that questions are displayed only if certain validation criteria are met. For example, if a person states that she has 2 kids, certain questions have to be filled in by the respondent (kid1 and kid2).


Group-level relevance

This example shows how group-level relevance appears in the logic check. Here are screenshots of the example described below.

As you can see, the group-level relevance equation (cohabs > 1 && p1_rel != "") appear in the grey Person 2 row for G-2.

You may also notice that all of the questions are mandatory. However, if the group is irrelevant, so are all its questions. As a result, those questions are only truly mandatory if the group is relevant.

You may also note that certain questions are displayed only if the answer to the previous question is not empty. You may see below that if p2_sex is not filled in, p2_name is not going to be displayed, even though it is a mandatory questions. The mandatory question p2_age is also not going to be displayed if p2_name is not filled in. These questions can be considered "conditionally mandatory".

Additionally, note that the tip messages are also automatically created for you. They are organized by value range (min/max), sum value range (min/max/equals), number of answers (min/max), etc (it depends on the used question type and active attributes). Sometimes you want to validate an answer range but don't want to display what might appear to be silly validation tips to the user. In such cases, you can use the hide_tip question option (as in this case, to avoid telling the user that the age must be between 0 and 115 unless they try to enter a bad value - see p2_age).


Comma as radix (decimal) separator

Although LimeSurvey fully supports the use of comma as radix (decimal) separator at run-time, you must still use a decimal as the radix separator at the design-time (e.g., when specifying min/max values in advanced question attributes). The working example can be found here.

Also, remember that the validation logic is created for you automatically from the enabled question attributes. The equations may look overwhelming, but you don't need to worry about them.