データ品質を確保する方法の一つは、フォームのデータフィールドに制約を追加することです。制約はユーザーが無効または不可能な回答を入力するのを防ぎます。例えば、収入を尋ねるとき、負の数や極端に高い値などの非現実的な値を避けたいものです。フォームにデータ制約を追加するのは簡単です。以下の手順に従ってください:

  1. フォームに「constraint」という新しい列を追加する。
  2. 「constraint」列に回答の制限を指定する数式を入力する。

収入に制約を追加する例を考えてみましょう。制約では収入が$0から$1,000,000の間である必要があります。制約の設定方法は以下の通りです:

nameconstraint
Income. >= 0 & . <= 1000000

上の例では、数式の「.」は質問変数を参照し、「Income」質問に対してユーザーが入力した値を表します。制約「. >= 0 && . <= 1000000」は入力された収入が0以上で1,000,000以下であることを確保します。

ハード制約

ハード制約は、入力された値が式を満たさない場合にフォームの送信を完全にブロックします。調査員は有効な値を入力するまで先に進めません。

ハード制約を追加するには、constraint列に式を入力します。オプションでconstraint_messageに人間が読めるメッセージを追加できます:

typenamelabelconstraintconstraint_message
integerage回答者の年齢. > 0 and . <= 120年齢は1から120の間でなければなりません
decimaltemperature体温(°C). >= 35 and . <= 42体温は35°Cから42°Cの間でなければなりません
textphone電話番号regex(., '^[0-9]{10}$')10桁の電話番号を入力してください

複数の条件

and/orで条件を組み合わせる:

  . >= 0 and . <= 100
  
  . = 'yes' or . = 'no'
  

パターン検証にregex()を使う

regex(value, pattern)関数は値を正規表現に対してテストします:

typenamelabelconstraintconstraint_message
textemailメールアドレスregex(., '^[^@]+@[^@]+\.[^@]+$')有効なメールアドレスを入力してください
textzip_code郵便番号regex(., '^[0-9]{5}$')5桁の郵便番号を入力してください

制約で他のフィールドを参照する

${fieldname}を使って他の質問の値を参照する:

typenamelabelconstraintconstraint_message
integerend_year終了年. >= ${start_year}終了年は開始年以降でなければなりません
decimalloan_repaid返済額. <= ${loan_amount}ローン額を超えて返済することはできません

ソフトアラート

ソフトアラート(ソフト制約または警告とも呼ばれる)は、値が異常に見えることを調査員に警告しますが、それでも続行を許可します。これは値が技術的に有効だが統計的に可能性が低い場合に有用です。

最も一般的なパターンは、疑わしい値にフラグを立てるrelevant式を持つnoteを使い、確認のためのacknowledge質問と組み合わせることです:

typenamelabelrelevant
integerchildren子供の数
notechildren_warning警告:${children}人の子供と入力しました。これが正しいことを確認してください。. > 15
triggerchildren_confirm子供の数が正しいことを確認してください${children} > 15

constraint_messageのみを使ったソフトアラート

より簡単なソフト警告には、極端な値に警告するが広い範囲を許可するように制約を記述できます:

typenamelabelconstraintconstraint_message
integerchildren子供の数. >= 0 and . <= 30この値は非常に高いように思えます。確認してください。
このページは役に立ちましたか?