On this page
calculate
Calculate
XLSFormおよびrtSurveyのcalculate質問タイプは、フォーム内の他のフィールドや値に基づいて計算を実行するために使用されます。これらの質問はユーザーには表示されず、バックグラウンドで実行され、後で使用または送信するために結果を保存します。
構文
XLSFormでcalculate質問は次のように定義されます:
| type | name | label | calculation |
|---|---|---|---|
| calculate | calc_q1 | ${q1} + ${q2} |
- type:この質問タイプでは常に"calculate"。
- name:calculate質問の一意の名前。
- label:calculate質問はユーザーに表示されないため、通常は空白のまま。
- calculation:評価される数式。
用途
Calculate質問は一般的に以下に使用されます:
- 算術演算の実行
- 文字列の連結
- 複雑なロジックや関数の適用
- 後で使用するための中間結果の保存
例
基本的な算術
| type | name | calculation |
|-----------|----------|-------------|
| calculate | total | ${price} * ${quantity} |
文字列の連結
| type | name | calculation |
|-----------|----------|-------------|
| calculate | full_name| concat(${first_name}, ' ', ${last_name}) |
関数の使用
| type | name | calculation |
|-----------|----------|-------------|
| calculate | age | int((today() - ${date_of_birth}) / 365.25) |
rtSurveyの高度な使用法
pulldata()関数
rtSurveyは計算フィールドでpulldata()関数をサポートしており、外部CSVファイルからデータを取得できます:
| type | name | calculation |
|-----------|----------|-------------|
| calculate | city | pulldata('cities', 'city_name', 'zip_code', ${zip_input}) |
構文
pulldata()の基本構文は次のとおりです:
pulldata('csv_filename', 'column_to_return', 'key_column', ${matching_value})
- ‘csv_filename’:CSVファイルの名前(.csv拡張子なし)
- ‘column_to_return’:取得したいデータを含む列名
- ‘key_column’:照合する列名
- ${matching_value}:キー列で検索する値(多くの場合フォームの変数)
重要事項
- CSVファイルは調査をデプロイする際にXLSFormと一緒にアップロードする必要があります。
- CSVファイルではセパレーターとしてカンマを使用し、セミコロンではありません。
- CSVのデータフィールド内のカンマは解析の問題を引き起こす可能性があるため避けてください。
- pulldata()は1対1の関係のみをサポートします。複数の一致が見つかった場合、最初のものだけを返します。
- 取得できるテキストの長さに制限がある場合があります(約76文字)。
- CSVデータに対してエントリを検証するために制約でpulldata()を使用できます。
条件付き計算
条件付き計算にif()文を使用できます:
| type | name | calculation |
|-----------|----------|-------------|
| calculate | discount | if(${total} > 1000, ${total} * 0.1, 0) |
ベストプラクティス
- フォームの可読性を向上させるために計算フィールドに意味のある名前を使用してください。
- 単一フィールドで過度に複雑な計算を避け、必要に応じて分割してください。
- 特に複雑な計算や外部データを使用する場合は、計算を徹底的にテストしてください。
- 計算フィールドはフォームが評価されるたびに実行されることを覚えておいてください。非常に複雑または多数の計算の場合はパフォーマンスに影響する可能性があります。
- pulldata()を使用する場合は、CSVファイルが正しく書式設定されていることを確認し、特定のデータとフォーム構造で徹底的にテストしてください。
制限事項
- 計算フィールドはユーザーが直接編集できません。
- 計算フィールドの結果は、表示フィールドで参照されるかフォームロジックで使用されない限り、すぐには表示されません。
このページは役に立ちましたか?