Actions

ExpressionScript sample surveys/ja: Difference between revisions

From LimeSurvey Manual

(Created page with "この例をダウンロードするには、次のリンクをクリックしてください。 Random 5 out of 10 survey example")
No edit summary
 
(39 intermediate revisions by 3 users not shown)
Line 34: Line 34:




この例では、体重と身長から太りすぎかどうかを判断する体格指数を計算します。最初は、次の4つの必須質問が表示されます。
この例では、体重と身長から、やせ気味、標準的、太り気味、肥満を判断する体格指数を計算します。最初は、次の4つの必須質問が表示されます。




Line 158: Line 158:




変数の命名方法(SGQAやQcode)がわからなくても心配いりません。主なドキュメンテーションでは、[[ExpressionScript/ja#Access to Variables|Qcode変数名の作成方法]]について説明していますが、実際のデモを見るのが一番です。このアンケートでは、ExpressionScriptを使用して質問の属性と回答にアクセスする方法を示します。
変数の命名方法(SGQAやQcode)がわからなくても心配いりません。主なドキュメンテーションでは、[[ExpressionScript - Presentation/ja#.E5.A4.89.E6.95.B0.E3.81.B8.E3.81.AE.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9|Qcode変数名の作成方法]]について説明していますが、実際のデモを見るのが一番です。このアンケートでは、ExpressionScriptを使用して質問の属性と回答にアクセスする方法を示します。




Line 185: Line 185:


アンケートをダウンロードするには、次のリンクをクリックしてください。 [[Media:ls2_EM_question_attributes.lss|LS3_EM_question_attributes.lss]]
アンケートをダウンロードするには、次のリンクをクリックしてください。 [[Media:ls2_EM_question_attributes.lss|LS3_EM_question_attributes.lss]]


=従来型の検証=
=従来型の検証=
Line 199: Line 198:




#[[QS:Min_num_value_n|min_num_value_n]] - minimum value for an answer
#[[QS:Min_num_value_n/ja|min_num_value_n]] - 回答の最小値
#[[QS:Max_num_value_n|max_num_value_n]] - max value for an answer
#[[QS:Max_num_value_n/ja|max_num_value_n]] - 回答の最大値
#[[QS:Min_answers|min_answers]] - minimum number of answers required
#[[QS:Min_answers/ja|min_answers]] - 回答数の下限
#[[QS:Max_answers|max_answers]] maximum number of answers allowed
#[[QS:Max_answers/ja|max_answers]] 回答数の上限
#[[QS:Multiflexible_min|multiflexible_min]] - minimum value allowed for an answer (for multiflexi numbers question type)
#[[QS:Multiflexible_min/ja|multiflexible_min]] - 回答の最小値(マルチフレックスナンバー質問タイプの場合)
#[[QS:Multiflexible_max|multiflexible_max]] - maximum value allowed for an answer (for multiflexi numbers question type)
#[[QS:Multiflexible_max/ja|multiflexible_max]] - 回答の最大値(マルチフレックスナンバー質問タイプの場合)
#[[QS:Min_num_value|min_num_value]] - minimum allowed sum across all answers for the question
#[[QS:Min_num_value/ja|min_num_value]] - 質問に対する全回答の合計の最小値
#[[QS:Max_num_value|max_num_value]] - maximum allowed sum across all answers for the question
#[[QS:Max_num_value/ja|max_num_value]] - 質問に対する全回答の合計の最大値
#[[QS:Equals_num_value|equals_num_value]] - the sum across all answers for the question must equal this value
#[[QS:Equals_num_value/ja|equals_num_value]] - 質問に対する全回答の合計と一致すべき数値
#[[QS:Preg_validation|validation]] - this is the regular expression validation for the question - it can apply to individual cells
#[[QS:Preg_validation/ja|validation]] - 質問の正規表現検証で、個々のセルに適用可能




Line 269: Line 268:
この質問では、検証式を適用して、子供の年齢を降順で入力するようにしています。
この質問では、検証式を適用して、子供の年齢を降順で入力するようにしています。


<syntaxhighlight lang="php" enclose="div">q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4</syntaxhighlight>
<syntaxhighlight lang="php">q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4</syntaxhighlight>




Line 280: Line 279:
以下の例では、検証式を適用することによって、指定された行について、回答された質問の数が3つ以下になるようになります。
以下の例では、検証式を適用することによって、指定された行について、回答された質問の数が3つ以下になるようになります。


<syntaxhighlight lang="php" enclose="div">(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)</syntaxhighlight>
<syntaxhighlight lang="php">(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)</syntaxhighlight>


これを以下のように書くこともできます。LimeSurveyは実行時に自動的に上記の式に変換します。
これを以下のように書くこともできます。LimeSurveyは実行時に自動的に上記の式に変換します。


<syntaxhighlight lang="php" enclose="div">(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)</syntaxhighlight>
<syntaxhighlight lang="php">(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)</syntaxhighlight>




Line 326: Line 325:




Note what happens when we check the "Fifth subquestion" for the first question '''"Which rows should appear below"'''. Note that the sum for the second "Enter some numbers" question is now 5. Even though subquestion 5 for that question still has the value 14 (e.g., if you un-check the fifth subquestion, you will see the value of 14 again), that value does not contribute to the sum since it is currently irrelevant. All irrelevant data is cleared (NULLed in the database) on submit, but it stays available on the page in case users want or need to change their minds about answers.
最初の質問'''"どの行が下に表示されるべきか"'''について、"5番目のサブ質問"をチェックするとどうなるか確認してください。 2番目の"Enter some numbers(何か数字を入力してください)"という質問の合計が5になっていることに注意してください。その質問のサブ質問5の値はまだ14です(ここで、サブ質問5のチェックを外すと、14の値が再び表示されます)。その値は現在のところ出現条件を満たさないので合計に寄与しません。送信時に出現していないとき項目のデータはすべてクリアされますが(データベースではNULLに設定されます)、ユーザーが回答を変更する必要がある場合に備えて、ページ内で保持されています。




Line 344: Line 343:




The ExpressionScript ensures that only valid numbers can be entered into numeric fields. If you enter an invalid number, you will be warned that something is wrong (e.g., in the case of the fruity theme, the whole question is "red-ed").
ExpressionScriptは、有効な数値のみを数値フィールドに入力できるようにします。無効な数値を入力すると、何かが間違っていることが警告されます(fruityテーマの場合、質問全体が「赤色」になります)。


数値は常に、データベース内の小数点記号としてピリオドを使用したものに変換されることに注意してください。これにより、統計分析が適切に機能します。
数値は常に、データベース内の小数点記号としてピリオドを使用したものに変換されることに注意してください。これにより、統計分析が適切に機能します。
Line 357: Line 356:




#[[Question type - Numerical input|Numerical input]] <nowiki>[</nowiki>N]
#[[Question type - Numerical input/ja|数値入力]] <nowiki>[</nowiki>N]
#[[Question type - Multiple numerical input|Multiple numerical input]] <nowiki>[</nowiki>K]
#[[Question type - Multiple numerical input/ja|複数数値入力]] <nowiki>[</nowiki>K]
#[[Question type - Array (Numbers)|Array (Numbers)]] <nowiki>[</nowiki>:]
#[[Question type - Array (Numbers)/ja|配列(数値)]] <nowiki>[</nowiki>:]
#[[Question type - Array (Texts)|Array (Texts)]] <nowiki>[</nowiki>;], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Question type - Array (Texts)/ja|配列(テキスト)]] <nowiki>[</nowiki>;][[QS:Numbers_only|numbers_only]]属性を使用する場合
#[[Question type - List (Radio)|List (radio)]] <nowiki>[</nowiki>L], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Question type - List (Radio)/ja|リスト(ラジオ)]] <nowiki>[</nowiki>L][[QS:Other_numbers_only|other_numbers_only]]属性を使用する場合
#[[Question type - Short free text|Short free text]] <nowiki>[</nowiki>S], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Question type - Short free text/ja|短いフリーテキスト]] <nowiki>[</nowiki>S][[QS:Numbers_only|numbers_only]]属性を使用する場合
#[[Question type - Multiple short text|Multiple short text]] <nowiki>[</nowiki>Q], when using the [[QS:Numbers_only|numbers_only]] attribute
#[[Question type - Multiple short text/ja|複数の短いテキスト]] <nowiki>[</nowiki>Q][[QS:Numbers_only/ja|numbers_only]]属性を使用する場合
#[[Question type - Multiple choice|Multiple choice]] <nowiki>[</nowiki>M], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Question type - Multiple choice/ja|複数選択]] <nowiki>[</nowiki>M][[QS:Other_numbers_only/ja|other_numbers_only]]属性を使用する場合
#[[Question type - Multiple choice with comments|Multiple choice with comments]] <nowiki>[</nowiki>P], when using the [[QS:Other_numbers_only|other_numbers_only]] attribute
#[[Question type - Multiple choice with comments/ja|コメント付きの複数選択]] <nowiki>[</nowiki>P][[QS:Other_numbers_only/ja|other_numbers_only]]属性を使用する場合




Line 435: Line 434:




This survey shows how you can configure a survey to randomly display one question per group. In it, there are 5 groups of 6 questions each. At the outset, in Group 0, five hidden Equation questions, called ask1-ask5, are populated. Each one has the value of {floor(rand(1,6.9999))} in the question text field, which means that the variables ask1-ask5 will each have a value between 1 and 6. Then, each question in the group has a relevance equation like "ask1==N" where N is the Nth question in the group (so the third question in group 1 has the relevance equation  "ask1==3").
このアンケートでは、グループごとに質問をランダムに表示するようにアンケートを設定する方法を示します。アンケートの中にはそれぞれ6つの質問からなる5つのグループがあります。当初、グループ0には、ask1-ask5と呼ばれる隠された式タイプの質問が5つ設定されています。それぞれの質問テキストフィールドには{floor(rand(1,6.9999))}という値が設定されています。つまり、ask1-ask5変数の値はそれぞれ1〜6になります。次に、グループ内の各質問には"ask1==N"(Nはグループ内のN番目の質問を指す)のような出現条件の式があります(グループ1の3番目の質問は出現条件の式"ask1==3"を持つ)。


This survey works equally well in survey-at-a-time, group-by-group, and question-by-question modes. Since the randomization is set in the first group, and that group is effectively hidden (since all of the ask1-ask5 questions are hidden), the randomization stays the same for the subject; but each different subject will have a distinct randomization.
このアンケートは、1ページにすべての質問を配置するモード、グループごとにページを変えるモード、質問ごとにページを変えるモードそれぞれで同じように機能します。ランダム化は最初のグループに設定され、そのグループは実際は隠されており(ask1-ask5の質問のすべてが隠されているため)、ランダム化は回答者ごとに同じままです。別の回答者は、これとは異なるランダム化が実行されます。




Line 443: Line 442:




#[[Question type - Equation|Equation question type]]
#[[Question type - Equation/ja|式質問タイプ]]
#Randomization functions
#ランダム化関数
#Conditional (if) function
#条件(if)関数




Line 451: Line 450:




This is Group0, which uses the [[Question type - Equation|Equation question type]] to select random values from 1 to 6 for each group (except the last group, which has only 4 questions).  Note that the "if()" function first checks whether ask1 has already been set, and if so, uses that value. If the value hasn't been set, then it uses a random value to set the value of ask1.
これはGroup0で、[[Question type - Equation/ja|式質問タイプ]]を使用して、各グループ(4つの質問のみを持つ最後のグループを除く)ごとに1から6までのランダム値を選択します。"if()"関数は、まずask1がすでに設定されているかどうかをチェックし、そうであれば、その値を使用することに注意してください。値が設定されていない場合は、ランダム値を使用してask1の値を設定します。




Line 457: Line 456:




This Group shows how the variable (ask4) from Group0 is used to control which question is visible within the fourth group.
このグループは、Group0の変数(ask4)を使用して、4つめのグループ内でどの質問が表示されるかを制御する方法を示しています。




Line 466: Line 465:




To download the above survey example, click here: [[Media:limesurvey_survey_55164.lss|Random questions within a group survey example]].
このアンケートの例をダウンロードするには、こちらをクリックしてください。 [[Media:limesurvey_survey_55164.lss|Random questions within a group survey example]]




Line 472: Line 471:




{{Alert|This applies only to all random questions from one group and only if the [[General_settings#General_settings_panel|Group by group or All in one]] format is used.}}
{{Alert|これは、1つのグループのすべてのランダム化された質問で、[[General_settings/ja#.E4.B8.80.E8.88.AC.E8.A8.AD.E5.AE.9A.E3.83.91.E3.83.8D.E3.83.AB|グループごと改ページまたは全質問1ページ]]のフォーマットが使用されている場合にのみ適用されます。}}




Line 478: Line 477:




This survey shows how to ask a random subset of questions in a group. For example, show 5 random questions out of 10 questions located within a group.
このアンケートでは、グループ内の質問のサブセットからランダムに尋ねる方法を示します。たとえば、グループ内にある10の質問のうち5つをランダムに質問します。


The survey has one group containing 10 questions. All questions are assigned the same [[QS:Random_group|randomization group name]]. As a result, they will be displayed in a random order on page load. Each question is given a relevance equation that the sum of the "[[ExpressionScript#Access to Variables|relevanceStatus]]" of all other questions in the group is less than the number of questions you want to show. Since [[ExpressionScript#Access to Variables|relevanceStatus]] is assigned as questions are rendered, this effectively totals the number of preceding questions.
アンケートには10の質問を含む1つのグループがあります。すべての質問には同じ[[QS:Random_group/ja|ランダム化グループ名]]が割り当てられます。これにより、ページの読み込み時にランダムな順序で表示されます。各質問には、グループ内の他のすべての質問の"[[ExpressionScript - Presentation/ja#.E5.A4.89.E6.95.B0.E3.81.B8.E3.81.AE.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9|relevanceStatus]]"の合計が、表示する質問の数よりも少なくなるような出現条件の式が与えられます。質問がレンダリングされるときに、[[ExpressionScript - Presentation/ja#.E5.A4.89.E6.95.B0.E3.81.B8.E3.81.AE.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9|relevanceStatus]]が割り当てられているので、先行する質問の数を適切に合計します。


So, in our 5 out of 10 example, the equation for Q1 would be:
したがって、10のうち5つ質問する例では、Q1の方程式は次のようになります。


<syntaxhighlight lang="php" enclose="div">sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5</syntaxhighlight>
<syntaxhighlight lang="php">sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5</syntaxhighlight>


For Q2, it would be:
Q2の場合は、次のようになります。


<syntaxhighlight lang="php" enclose="div">sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5</syntaxhighlight>
<syntaxhighlight lang="php">sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5</syntaxhighlight>


以下同様。
以下同様。
Line 496: Line 495:




#[[Expression_Manager#Access_to_Variables|relevanceStatus variable]]
#[[ExpressionScript - Presentation/ja#.E5.A4.89.E6.95.B0.E3.81.B8.E3.81.AE.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9|relevanceStatus変数]]
#[[QS:Random group|Randomizing]]
#[[QS:Random group/ja|ランダム化]]
 


==ダウンロード==
==ダウンロード==
Line 511: Line 509:




The below example shows how you can ask users to list a set of products that interest them, and then have them rate those products.
以下の例は、ユーザーが関心を持つであろう一連の製品をリストとして提示し、それらの製品を評価(順位付け)させる方法を示しています。




==EM機能のデモ==
==ES機能のデモ==




#'''Tailoring answers''' - when rating products, the labels come from the comment field of the preceding multiple choice question
#'''回答の文言調整''' - 商品を評価するとき、ラベルは前の複数選択質問のコメントフィールドから引用します
#'''Tailoring scales''' - many advanced questions options, like scale headings, can also be tailored.
#'''尺度の調整''' - 尺度の見出しのような高度な質問オプションの文言の調整できます。




Line 524: Line 522:




This image shows that even though only products 1,3, and 5 were selected, only those 3 are displayed (using the [[QS:Array_filter|array_filter]] attribute). Moreover, the row labels in the second question are either the product numbers (if nothing is entered into the comment field) or the contents of the comment fields.
この画像は、前の質問で製品1、3、5が選択されているとき、[[QS:Array_filter/ja|array_filter]]属性を使用してその3つしか表示されないことを示しています。さらに、2番目の質問の行ラベルは、製品番号(コメントフィールドに何も入力されていない場合)またはコメントフィールドの内容になっています。




Line 530: Line 528:




This image shows how the tailored answers are specified:
この画像は、質問文がどのように調整されるかを示しています。




Line 536: Line 534:




Here is the Show Logic File for that question, which lets us verify that the conditional logic works as desired (e.g., to see whether there are any syntax errors):
これは、その質問に対するロジックファイルの表示です。これにより、条件付きロジックが必要に応じて動作することを確認できます(構文エラーがないかどうかなど)。




Line 542: Line 540:




The next image shows a group in which you specify a 5 point rating scale (Options 1-5), the title of the scale, and the products you want to rate. The final question shows that each of the parts of the array question can be tailored:
次の画像には、5点の評価尺度(オプション1-5)、尺度のタイトル、および評価したい製品を指定したグループが表示されています。最後の質問は、配列の質問の各々を調整できることを示しています。




Line 548: Line 546:




The next image shows the logic file view of the last question. As you can observe, the subquestions, answers, and scale headers can be tailored.
次の画像は、最後の質問の論理ファイルビューを示しています。ご覧のように、サブ質問、回答、尺度のヘッダーを調整することができます。




<center>[[File:mcc_filter5.jpg]]</center>
<center>[[File:mcc_filter5.jpg]]</center>


==ダウンロード==
==ダウンロード==




To download the survey example from above, click on the following link: [[Media:Rating_User-Entered_List_of_Products_Survey.zip|Rating user-entered list of products survey example]].
この例をダウンロードするには、次のリンクをクリックしてください。[[Media:Rating_User-Entered_List_of_Products_Survey.zip|Rating user-entered list of products survey example]]

Latest revision as of 02:25, 19 February 2022


はじめに

ExpressionScriptの使い方を学ぶ最も良い方法は、実際の例を試して、必要に応じて修正することです。

次のサンプルアンケートは、EMを使ってアンケートを強化する方法を確認し、テストするためのものです。これらのアンケートは、ディストリビューションの/docs/demosurveysフォルダーにあります。


出現条件、文言調整、式

概要

次の例では、回答者のBMI(体格指数)を計算します。 この例で使われている機能は以下のとおりです。

EM機能のデモ

  1. 出現条件 - 強力な条件付きロジックのサポート。
  2. パイピング/文言調整 - 回答と質問のメタデータをパイピングまたは調整する機能を提供します。
  3. 動的文言調整 - 質問に答えると、ページ上のレポートが変更されます。
  4. 条件付き文言調整 - if()ステートメントを使用した文やレポート内の条件付き文言調整
  5. - 計算が非表示の場合でも、計算を実行して結果をデータベースに保存できる新しい質問タイプ
  6. 条件付き検証 - 最小許容値などの検証基準は、式などに基づいて、条件付きにすることができます。


スクリーンショット

この例では、体重と身長から、やせ気味、標準的、太り気味、肥満を判断する体格指数を計算します。最初は、次の4つの必須質問が表示されます。



情報を入力すると(メートル法またはそれ以外の単位を使用するかどうかも選択)、入力した内容の要約と体重の状態を示すレポートが表示されます。



ここでは、メートル法以外の単位を使用して、結果がどのように動的に変化するかを示す例を紹介します。



カスタムJavaScriptを使わず、データを必要に応じてメートル法に変換し、メートル法で身長、体重、BMI、および体重の状態をデータベースに格納する式タイプの質問があります。

次の例では、レポート内で数学およびその他の関数を使用する方法を確認できます。これは、データを入力する前のページの様子です。未入力または数値以外が入力されている場合に"NaN"または"ゼロ除算エラー"を表示するのではなく、空白のセルを表示するための条件付きロジックがあります。



数字が入力されると、ページ上のレポートが変化して、実行した計算とその結果が表示されます。



このサンプルアンケートには他にも多くの例があります。たとえば、次のスクリーンショットでは、表示条件が動的に変化する入力ページの1例です。ヘルプテキストが示すように、さまざまな年齢、特に矛盾する回答の組み合わせを試し、下部に表示される面白いメッセージを確認してください。また、複数の子供がいると回答した場合は、"X人の子供と楽しく過ごしてください」ではなく、"Xの子供たちと楽しく過ごしてください"というメッセージが表示されることに注目してください。性別や数に応じて文言を調整できるだけでなく、簡単に動詞を活用させたり、性別や数に基づいて名詞を変化させたりすることもできます。



ダウンロード

サンプルアンケートにアクセスするには、LS3_em_tailoring.zipリンクをクリックしてください。

サンプル調査

概要

これは、世帯に何人の人がいるかを尋ねる調査の例です。

グループレベルの出現条件を使って質問の"ループ"を簡単に実装する例を示しています。Person 1のグループを作成した後、そのグループをエクスポートします。SGQAコードの代わりにp1_nameのようなqcode変数名を使用していたので、テキストエディタを使ってグループを何度も素早く編集して再インポートできます(例えば、すべての変数に一意の変数名があり、グループレベルのロジックが正しくなるよう、繰り返しグループを編集して再インポートするのに約10秒かかります)。

質問のコピー機能もありますが、上記のオプションとほど速くはできません。

これは、アンケートが本当に終了するまで(たとえば、必要なすべてのグループが完了するまで)、終了メッセージが表示されないようにする方法も示しています。


EM機能のデモ

  1. グループレベルの出現条件 - フォローアップグループ(Person 1〜5)は、指定された同居人の数までしか表示されません。
  2. 文言調整 - 最終レポートでは、同居者それぞれの統計データを要約します。
  3. 質問の段階的表示 - グループモードでもオールインワンモードでも、後続の質問は、前の質問に回答するまで表示されません。


スクリーンショット

アンケートから、指定された数の同居者の統計情報が表示されるよう調整されたレポートが生成されます。



一度にすべての質問を表示するモードに切り替えると、インデックスによって質問が調整されていることがわかります。回答者がその人が女性であるとしたので、"彼女の名前は何ですか"と尋ねます。 そして、"Mary"と答えたので、次の質問は"メアリーは何歳ですか"と尋ねています。



ダウンロード

アンケートサンプルのダウンロードはこちらです。LS3_group_relevance.zip


配列フィルターの入れ子

概要

このアンケートは、Joy Lane Research, LLCのアンケートデザインに基づいています。


スクリーンショット

次の点に着目してください。

  • Q02は、Q01でチェックされた製品のセットのみを(array_filterを使用して)表示します
  • Q02には、Q01の"Other electronic"フィールドに入力されたテキスト("Another product")も表示されます
  • Q04は、Q02でチェックされた製品のみを表示します(配列フィルタの入れ子)
  • Q05はQ02でチェックされていない製品を表示します(入れ子のarray_filter_excludeを使用)




ダウンロード

上の例をダウンロードするには、次のリンクをクリックしてください。 LS2_cascading_array_filterのアンケート例


すべての質問タイプと属性を使用したパイピング/文言調整

概要

変数の命名方法(SGQAやQcode)がわからなくても心配いりません。主なドキュメンテーションでは、Qcode変数名の作成方法について説明していますが、実際のデモを見るのが一番です。このアンケートでは、ExpressionScriptを使用して質問の属性と回答にアクセスする方法を示します。


この例では、このアンケートを編集する際、組み込みのHTMLエディターをオフにする(またはポップアップモードに変換する)ことをお勧めします。HTMLエディターが大きなHTMLレポートを編集モードで表示しようとすると、1分以上かかることがあります。


コンテンツ

  • すべての質問タイプの例
  • "その他"を使用できるすべての質問タイプが含まれているので、変数命名にどのように影響するかを見ることができます
  • 既定値を受け入れるすべての質問タイプの既定値
  • 文言調整 - ページ内、および別ページのレポートには、16種類のEMドット表記の接尾辞がすべて表示されています
  • これらのレポートには、現在入力されているすべてのデータが表示されます(回答画面印刷の代わりに印刷用レポートを生成する方法がわかります)
  • すべての変数に対するQcodeとSGQAによる適切な命名


スクリーンショット

これは巨大なアンケートであるため、スクリーンショットを表示しないことにしました。ダウンロードして確かめてください。


ダウンロード

アンケートをダウンロードするには、次のリンクをクリックしてください。 LS3_EM_question_attributes.lss

従来型の検証

概要

これは、式を使用するすべての検証タイプと、検証をサポートする質問タイプにどのように影響するかを示すものです。多くの場合、検証ヒントは非表示であり、検証基準に適合しなかった場合にのみ表示されます(したがって、検証基準に適合すると消えます)。


デモで使われている検証タイプ

  1. min_num_value_n - 回答の最小値
  2. max_num_value_n - 回答の最大値
  3. min_answers - 回答数の下限
  4. max_answers 回答数の上限
  5. multiflexible_min - 回答の最小値(マルチフレックスナンバー質問タイプの場合)
  6. multiflexible_max - 回答の最大値(マルチフレックスナンバー質問タイプの場合)
  7. min_num_value - 質問に対する全回答の合計の最小値
  8. max_num_value - 質問に対する全回答の合計の最大値
  9. equals_num_value - 質問に対する全回答の合計と一致すべき数値
  10. validation - 質問の正規表現検証で、個々のセルに適用可能


スクリーンショット

新しいCSSスタイルを使用すると、それぞれの検証タイプに別々のヒントが表示されます。表示されている場合は、hide_tipオプションで非表示にすることができます。既定では、質問が検証基準に適合しなかった場合は赤いフォントで表示し、検証基準に適合した場合は緑で表示します。



ユーザーは検証エラーのあるページを送信できません。間違った情報を入力した場合、すぐに警告されます。



この例のように、配列内の個々のセルで検証することができます。この例では、正規表現検証により、各エントリーが適切にフォーマットされた米国の電話番号(市外局番を含む)であることが保証されています。



ダウンロード

上の例をダウンロードするには、LS3_Validation_tests.zipをクリックしてください。


検証式

概要

場合によっては、従来の最小/最大基準を使用しても達成できないカスタム検証が必要な場合もあります。このためには、質問レベルあるいはサブ質問レベルで複雑な検証式を構築できるem_validation_qやem_validation_sqオプションを使用する必要があります。


サブ質問レベルでは、変数名を知らなくても配列内の各セルを簡単に検証できるよう、"this"変数も導入されています。詳細については、こちらをクリックしてください。


EM機能のデモ

  1. em_validation_q - 質問全体が有効かを決定する式です。
  2. em_validation_q_tip - 質問がem_validation_qの条件に適合しない場合に表示するメッセージです。
  3. em_validation_sq - 各サブ質問(配列のセル)が有効かを決定する式です。
  4. em_validation_sq_tip - サブ質問のいずれかが有効でない場合に表示されるメッセージです。

一般に、em_validation_sqを使用すると、無効なセルがあればそのセルの背景色が赤色に変わり、エラーがあることを示します。


スクリーンショット


この質問では、検証式を適用して、子供の年齢を降順で入力するようにしています。

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





以下の例では、検証式を適用することによって、指定された行について、回答された質問の数が3つ以下になるようになります。

(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)

これを以下のように書くこともできます。LimeSurveyは実行時に自動的に上記の式に変換します。

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



ダウンロード

上記の例で使用したアンケートサンプルをダウンロードするには、ls2_test_em_sq_validation.lssリンクをクリックしてください。


サブ質問の出現条件

概要

これは、array_filterと検証基準がどのように相互作用するかを示しています。合計に適用される検証では、出現条件を満たす(可視の)値のみが考慮されます。


EM機能のデモ

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

また、コアの質問で回答された質問の数を動的にレポートします。


スクリーンショット

可視行の数を変更すると、合計が動的に変更されます。サブ質問を出現条件を満たさないとマークしても、値はクリアされませんが、いかなる式にも影響しません。



最初の質問"どの行が下に表示されるべきか"について、"5番目のサブ質問"をチェックするとどうなるか確認してください。 2番目の"Enter some numbers(何か数字を入力してください)"という質問の合計が5になっていることに注意してください。その質問のサブ質問5の値はまだ14です(ここで、サブ質問5のチェックを外すと、14の値が再び表示されます)。その値は現在のところ出現条件を満たさないので合計に寄与しません。送信時に出現していないとき項目のデータはすべてクリアされますが(データベースではNULLに設定されます)、ユーザーが回答を変更する必要がある場合に備えて、ページ内で保持されています。



ダウンロード

この例をダウンロードするにはここをクリックしてください。 ls2_subquestion_relevance.lss


カンマを小数点として使用する

概要

ExpressionScriptは、有効な数値のみを数値フィールドに入力できるようにします。無効な数値を入力すると、何かが間違っていることが警告されます(fruityテーマの場合、質問全体が「赤色」になります)。

数値は常に、データベース内の小数点記号としてピリオドを使用したものに変換されることに注意してください。これにより、統計分析が適切に機能します。

小数点記号を変更するには、設定タブにあるテキストエレメントオプションにアクセスし、小数点で設定してください。


小数点について、詳細はこちらをクリックしてください。


小数点記号を使用する質問の種類

  1. 数値入力 [N]
  2. 複数数値入力 [K]
  3. 配列(数値) [:]
  4. 配列(テキスト) [;]でnumbers_only属性を使用する場合
  5. リスト(ラジオ) [L]でother_numbers_only属性を使用する場合
  6. 短いフリーテキスト [S]でnumbers_only属性を使用する場合
  7. 複数の短いテキスト [Q]で numbers_only属性を使用する場合
  8. 複数選択 [M]で other_numbers_only属性を使用する場合
  9. コメント付きの複数選択 [P]でother_numbers_only属性を使用する場合


スクリーンショット

以下のスクリーンショットではカンマを小数点記号として使用する例を確認できます。



ダウンロード

上記の例をダウンロードするには、次のリンクをクリックします。 ls2_comma_as_radix_separator.lss


グループのランダム化

概要

このアンケートでは、random_group属性を使用する方法を示します。

この属性を使用すると、アンケートを開始するたびに質問の順序がランダム化されます。ただし、ひとたびアンケートが開始されれば、言語を変更してもランダム化の順序は固定されたままになります。


スクリーンショット

以下の例を一緒にチェックしてみましょう。最初のページのランダム化された質問は、Q1、Q4、Q7になります。2番目のページのランダム化された質問は、Q2、Q5、Q8になります。



このアンケートを初めてテストしたときにランダム化が行われました。



2回目にアンケートをテストしたときは、ランダム化の結果が異なります。



しかし、(アンケートを再開せずに)フランス語に切り替えても、ランダム化された順序はそのまま残りました。



ダウンロード

上記の例をダウンロードするには、次のリンクをクリックしてください。 Randomization_Group_Test.lss


グループごとにランダムに質問する

概要

このアンケートでは、グループごとに質問をランダムに表示するようにアンケートを設定する方法を示します。アンケートの中にはそれぞれ6つの質問からなる5つのグループがあります。当初、グループ0には、ask1-ask5と呼ばれる隠された式タイプの質問が5つ設定されています。それぞれの質問テキストフィールドには{floor(rand(1,6.9999))}という値が設定されています。つまり、ask1-ask5変数の値はそれぞれ1〜6になります。次に、グループ内の各質問には"ask1==N"(Nはグループ内のN番目の質問を指す)のような出現条件の式があります(グループ1の3番目の質問は出現条件の式"ask1==3"を持つ)。

このアンケートは、1ページにすべての質問を配置するモード、グループごとにページを変えるモード、質問ごとにページを変えるモードそれぞれで同じように機能します。ランダム化は最初のグループに設定され、そのグループは実際は隠されており(ask1-ask5の質問のすべてが隠されているため)、ランダム化は回答者ごとに同じままです。別の回答者は、これとは異なるランダム化が実行されます。


機能のデモ

  1. 式質問タイプ
  2. ランダム化関数
  3. 条件(if)関数


スクリーンショット

これはGroup0で、式質問タイプを使用して、各グループ(4つの質問のみを持つ最後のグループを除く)ごとに1から6までのランダム値を選択します。"if()"関数は、まずask1がすでに設定されているかどうかをチェックし、そうであれば、その値を使用することに注意してください。値が設定されていない場合は、ランダム値を使用してask1の値を設定します。



このグループは、Group0の変数(ask4)を使用して、4つめのグループ内でどの質問が表示されるかを制御する方法を示しています。



ダウンロード

このアンケートの例をダウンロードするには、こちらをクリックしてください。 Random questions within a group survey example


グループ(質問のサブセット)内の特定の数の質問をランダムに質問する

  これは、1つのグループのすべてのランダム化された質問で、グループごと改ページまたは全質問1ページのフォーマットが使用されている場合にのみ適用されます。



概要

このアンケートでは、グループ内の質問のサブセットからランダムに尋ねる方法を示します。たとえば、グループ内にある10の質問のうち5つをランダムに質問します。

アンケートには10の質問を含む1つのグループがあります。すべての質問には同じランダム化グループ名が割り当てられます。これにより、ページの読み込み時にランダムな順序で表示されます。各質問には、グループ内の他のすべての質問の"relevanceStatus"の合計が、表示する質問の数よりも少なくなるような出現条件の式が与えられます。質問がレンダリングされるときに、relevanceStatusが割り当てられているので、先行する質問の数を適切に合計します。

したがって、10のうち5つ質問する例では、Q1の方程式は次のようになります。

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

Q2の場合は、次のようになります。

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

以下同様。


機能のデモ

  1. relevanceStatus変数
  2. ランダム化

ダウンロード

この例をダウンロードするには、次のリンクをクリックしてください。 Random 5 out of 10 survey example

ユーザが入力した商品リストの順位付け

概要

以下の例は、ユーザーが関心を持つであろう一連の製品をリストとして提示し、それらの製品を評価(順位付け)させる方法を示しています。


ES機能のデモ

  1. 回答の文言調整 - 商品を評価するとき、ラベルは前の複数選択質問のコメントフィールドから引用します
  2. 尺度の調整 - 尺度の見出しのような高度な質問オプションの文言の調整できます。


スクリーンショット

この画像は、前の質問で製品1、3、5が選択されているとき、array_filter属性を使用してその3つしか表示されないことを示しています。さらに、2番目の質問の行ラベルは、製品番号(コメントフィールドに何も入力されていない場合)またはコメントフィールドの内容になっています。



この画像は、質問文がどのように調整されるかを示しています。



これは、その質問に対するロジックファイルの表示です。これにより、条件付きロジックが必要に応じて動作することを確認できます(構文エラーがないかどうかなど)。



次の画像には、5点の評価尺度(オプション1-5)、尺度のタイトル、および評価したい製品を指定したグループが表示されています。最後の質問は、配列の質問の各々を調整できることを示しています。



次の画像は、最後の質問の論理ファイルビューを示しています。ご覧のように、サブ質問、回答、尺度のヘッダーを調整することができます。


ダウンロード

この例をダウンロードするには、次のリンクをクリックしてください。Rating user-entered list of products survey example