x

主要章節

  1. LimeSurvey Cloud 與 LimeSurvey CE 的差異
  2. 快速入門指南 - LimeSurvey 3.0+
  3. 安裝 - LimeSurvey CE
  4. 如何設計一份好的問卷(指南)
  5. 入門指南
  6. 管理 LimeSurvey
  7. 問卷 - 簡介
  8. 問卷設定
  9. 問卷選單
  10. 問卷結構
  11. 問題簡介
  12. 題組 - 簡介
  13. 問卷管理
  14. 問卷工具列選項
  15. 多語言問卷
  16. ExpressionScript 引擎 - 快速入門指南
  17. 未分類及進階功能
  18. 常見問題
  19. 疑難排解
  20. 應變方案
  21. 授權條款
  22. 版本更改紀錄檔
  23. 外掛程式
 Actions

檢查問卷邏輯 - 進階

From LimeSurvey Manual

本頁面可能為機器翻譯,可能包含錯誤。 檢視英文原文 · 改善此翻譯
This page is a translated version of the page Check survey logic - Advanced and the translation is 100% complete.


概述

檢查問卷邏輯是一個重要的選項,可協助您建立並輕鬆維護複雜的問卷。

在問卷的開發與測試過程中,以及啟用問卷之前,驗證問卷邏輯非常重要。當您使用複雜的相關性、客製化內容和驗證等式時尤其如此——您需要確保執行問卷時不會出現任何問題。

此功能可讓您快速驗證問卷、題組和問題的正確性。您可以從最上列選單中問卷相關設定下方的選項進入。它位於工具選單中:



如上所示,問卷中使用的每種語言都可以各執行一次此選項,最多四次。

說明

檢查問卷邏輯選項會以方便閱讀的表格形式,顯示您為每個問題和題組所指定的全部內容(例如名稱、文本、說明、條件/相關性、驗證規則、預設值、子問題、答案)。它會醒目標示錯誤,並讓您點擊問題和題組的 ID(或等式中使用的變數),在新的瀏覽器分頁中編輯這些問題或題組。如此您可以快速編輯任何錯誤,並重新整理邏輯檢查頁面,在啟用問卷之前確認問卷的正確性。

此顯示方式也設計成讓研究人員和研究贊助者都能閱讀,以便他們驗證問卷設計和邏輯的正確性。檢查問卷邏輯會更新已啟用問卷中所有運算式的快取。

它包含下列欄:

  • # - 顯示題組和問題的順序計數,從 0 開始。
  • 姓名 [ID] - 顯示題組/問題/子問題的問題編號。這些編號可在運算式中作為變數使用。ID 是問題 ID(QID)或群組 ID(GID)。此欄位也會顯示問題類型(例如:多項選擇 [M])。


若要進一步了解運算式中可使用哪些變數,請閱讀下列wiki 小節。


  • 相關性 [驗證] (預設) - 顯示下列內容:
    • 相關性 - 問題或題組經語法醒目標示的相關性等式。如果始終為真(即在任何情況下都顯示),其值將為 1。
    • 驗證 - ExpressionScript 會根據所選的問題屬性(例如答案數量下限/上限、總和下限/上限/等於值、個別值下限/上限,或正規表示式驗證)自動產生驗證等式。此區段會顯示所產生的驗證等式,讓您能夠偵測是否有任何錯誤(例如未定義的變數)。
    • 預設 - 如果問題有預設值,會在此處顯示,並以語法醒目標示(因為預設值可能是運算式)。
  • 文字 [幫助] (提示) - 顯示下列內容:
    • 文字 - 題組、問題、子問題或答案的文字。它會以語法醒目標示,以顯示任何內嵌的客製化內容,讓您確認已宣告客製化內容中計畫使用的所有變數。
    • 幫助 - 顯示問題的說明文字,同樣以語法醒目標示。
    • 提示 - 顯示根據問題屬性在內部產生的驗證提示。所有問卷樣式,以及可供列印的問卷和資料登錄畫面都使用相同的提示。
    • 問題屬性 - 顯示此問題所有相關問題屬性的表格。可能是等式的屬性會以語法醒目標示,以便您驗證其正確性。

列的顏色編碼如下:

  • 題組 - 以淺灰色背景顯示
  • 問題 - 以淺綠色背景顯示
  • 子問題 - 以淡黃色背景顯示
  • 答案 - 以純白色背景顯示

答案在相關性欄中有一個額外的屬性:

  • 值 - 這是計算所使用的預設內部值。如果您使用評估,這將是評估值。否則,它將與答案名稱相同。


如果問卷說明、歡迎訊息和結束訊息、結尾 URL、問卷資料政策通知和標籤對應的欄位不是空白,它們會列在檢查問卷邏輯頁面中(表格上方)!

使用方式

頁面頂端有一則摘要訊息。如果一切正常,它會顯示「沒有在這份問卷中檢測到任何語法錯誤」,或「此題組」或「此問題」「本身不包含任何語法錯誤」。如果情況相反,則會顯示「X 個問題有語法錯誤,需要修正」。

每個有語法錯誤的問題,其最左側欄(即 #)的背景會以紅色標示。此外,姓名 [ID] 欄下方會顯示警告,說明該問題至少有幾個錯誤。以下是常見的錯誤:

  • 未定義變數 - 如果您沒有定義所有變數,或將 array_filter 拼錯(或 array_filter 使用了不同的答案選項集),部分驗證問題就會顯示錯誤。未定義的變數會以紅色文字顯示,並以紅線框起。
  • 語法錯誤 - 開始使用相關性等式後,您可能會使用過多或過少的括號。此類語法問題會以紅色醒目標示並框起。如果將滑鼠游標移到任何此類紅框文字上,工具提示會說明該錯誤。

ExpressScript 語法中的顏色

條件和等式會以語法醒目標示,讓您更容易辨識內容:

  1. 綠色 / 淺藍色:參照問卷中較前面問題的變數
  2. 藍色:函數
  3. 灰色:字串運算式
  4. 棕色:TOKEN 運算式(參與者資料)
  5. 黑色:運算子

需要檢查的項目:

  1. 紫色:參照問卷中較後面問題的變數。這通常是錯誤,需要檢查。
  2. 紅色或紅框:不存在的變數、對較前面問題的參照,或語法錯誤——通常需要檢查。


未定義變數

如果使用了未定義的變數,該變數名稱會以紅色標示並以紅線框起。如果將滑鼠游標移到變數名稱上,會顯示「undefined variable」(未定義變數):



  注意 : 請注意,LimeSurvey 不允許問卷管理員建立使用相同問題編號的問題。但是,如果您匯入的題組或問題使用的問題編號與您已定義的某個問題相同,問卷中就可能出現相似的問題編號。由於問題 ID 不同,該問題仍可匯入。不過,如果您希望匯出問卷結果以便使用 R 或 SPSS 進一步探索問卷結果,請務必小心,因為問題編號會被視為變數!



}}

語法錯誤

大多數與運算式相關的錯誤都源於語法錯誤。這通常是因為問卷管理員漏掉了大括號、未正確使用括號,或錯誤地使用了運算式:



以下有許多關於使用語法醒目提示的優良範例。


錯誤的自訂 JavaScript

JavaScript 錯誤同樣會在問卷邏輯檢查中以醒目方式標示:


加快編輯與驗證

所有以語法醒目提示的文字都內嵌了工具提示,而且可以點擊:

  1. 工具提示
    • 函數 - 將滑鼠移到函數上,即可查看該函數的用途與語法定義;
    • 變數名稱 - 將滑鼠移到變數名稱上,即可查看該問題的位置(群組、問題順序)、問題文字及可用的答案。
  2. 動作
    • 變數名稱 - 點擊變數名稱會開啟新視窗,讓您編輯該問題。這使得瀏覽與驗證邏輯變得很容易 - 只要持續點擊問題的相關性或驗證條件中的變數名稱,即可了解它們的來源及用法。


範例

以下範例取自 ExpressionScript 範例問卷。您可以在該頁面找到執行中問卷的螢幕截圖、說明及下載檔案。


身體質量指數

以下是此範例的螢幕截圖。

這是身體質量指數計算的問題重新排序檢視。您可以在問題欄下看到體重、身高及 BMI 的相關性運算式:



若要更清楚地概覽問卷,請查看問卷邏輯頁面:



此問卷範例也很好地示範了如何使用巢狀 if() 陳述式來產生「weightstatus」。


串聯邏輯

以下是此範例的螢幕截圖。

它顯示了使用 array_filter 和 array_filter_exclude 時自動產生的子問題驗證邏輯。此範例也展示了如何替換經過客製化的「其它」值(Q02_other 的答案為 Q01_other)。



此範例中的 Q05 同時分別對 Q01 和 Q02 使用了 array_filter 和 array_filter_exclude,展示了串聯 array_filter 的功能。請注意,顯示問題與子問題層級驗證條件的主要原因之一,是協助確保您在指定 array_filter 或 array_filter_exclude 的變數名稱時沒有打錯字(或是在您為篩選後的子問題清單使用不同變數名稱的情況下)。如果有此類錯字,所有無效的變數名稱都會以紅色顯示,表示它們未定義,讓您能快速修正問題。



動態相關性

此範例展示如何利用動態串聯相關性邏輯來控制問題的顯示與否。您可以在此下載此範例。

另請注意,只有在符合特定驗證條件時才會顯示問題。例如,如果受訪者表示她有 2 個孩子,則受訪者必須填寫某些問題(kid1 和 kid2)。


群組層級的相關性

此範例說明群組層級的相關性在邏輯檢查中的顯示方式。以下是下述範例的螢幕截圖。

如您所見,群組層級的相關性等式 (cohabs > 1 && p1_rel != "") 顯示在 G-2 灰色的「Person 2」列中。

您可能也會注意到,所有問題都是必填。不過,如果群組不相關,其所有問題也會不相關。因此,只有在群組相關時,這些問題才真正是必填。

您也可能發現,某些問題只有在上一個問題的答案不為空時才會顯示。如下所示,若未填寫 p2_sex,即使 p2_name 是必填問題,也不會顯示;同樣地,若未填寫 p2_name,必填問題 p2_age 也不會顯示。這些問題可視為「有條件必填」。

此外,請注意提示訊息也會自動為您建立。這些訊息依數值範圍(最小值/最大值)、總和數值範圍(最小值/最大值/等於)、答案數量(最小值/最大值)等進行整理(視所使用的問題類型和啟用的屬性而定)。有時您想驗證答案範圍,但不希望向使用者顯示看起來多餘的驗證提示。在這種情況下,您可以使用 hide_tip 問題選項(如本例中,除非使用者嘗試輸入不正確的值,否則不會告知年齡必須介於 0 至 115 之間,請參見 p2_age)。


以逗號作為小數點分隔符號

雖然 LimeSurvey 在執行時完全支援以逗號作為小數點分隔符號,但在設計時(例如在進階問題屬性中指定最小值/最大值時),您仍必須使用句點作為小數點分隔符號。可參考的實際範例請見此處。

此外,請記住,驗證邏輯是根據已啟用的問題屬性自動為您建立的。這些等式看起來可能令人眼花撩亂,但您無需擔心。