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

ExpressionScript 範例問卷

From LimeSurvey Manual

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


簡介

學習使用 ExpressionScript 最好的方法,就是實際操作可運作的範例,並依照您的需求加以修改。

以下提供一組範例問卷,用以示範(及測試)如何運用 EM 來強化您的問卷。這些問卷可在發行套件的 /docs/demosurveys 資料夾中找到。


相關性、量身訂製與方程式

概述

以下範例會計算每位受訪者的 BMI(身體質量指數)。請參閱下方此範例所示範的功能。

所示範的 EM 功能

  1. 相關性 - 支援強大的條件邏輯;
  2. 管道傳遞/量身訂製 - 可將答案和問題中繼資料進行管道傳遞或量身訂製;
  3. 動態量身訂製 - 請注意,當您回答問題時,頁面上的報告會隨之變更。
  4. 微量身訂製 - 使用 if() 陳述式,在句子和報告中進行條件式量身訂製
  5. 方程式 - 新的問題類型,可讓您進行計算並將結果儲存於資料庫中,即使該計算是隱藏的
  6. 條件式驗證 - 驗證條件(例如允許的最小值)可以是有條件的,例如根據方程式而定。


螢幕截圖

此範例會計算身體質量指數,依據您的體重和身高來判斷您屬於體重過輕、正常、過重或肥胖。請注意,一開始您只會看到四個必填問題:



輸入您的資料後(您可以選擇使用公制或非公制單位),就會看到一份量身訂製的報告,彙整您所輸入的內容,並告知您的體重狀態:



以下是另一個範例,使用非公制單位來示範結果如何動態變化:



在內部層級有隱藏的方程式類型問題,會(在需要時)將資料轉換為公制,並將公制的身高、體重、BMI 和體重狀態儲存於資料庫中,無需自訂 JavaScript。

在下一組範例中,您可以看到如何在量身訂製的報告中使用數學函數及其他函數。這是您輸入任何資料之前頁面的樣子。其中包含條件邏輯,當未輸入資料(或輸入非數字資料)時會顯示空白儲存格,而不是顯示「NaN」或「Divide by Zero」。



輸入數字時,頁面上的報告會變更,以顯示正在執行的計算及其結果。



此範例問卷中還有許多其他範例。例如,下方螢幕截圖顯示了填寫「動態相關性」頁面的數十種方式之一。如說明文字所述,請嘗試不同的年齡,尤其是不合邏輯的回答組合,看看底部產生的有趣訊息。另請注意,如果您表示有一個以上的孩子,訊息會顯示「I hope you enjoy playing with your X children」,而不是「I hope you enjoy playing with your child」。這說明了您可以輕鬆地對句子進行微量身訂製,使其符合受訪者的性別和/或數量。您甚至可以根據性別和數量輕鬆地變化動詞和名詞。



下載

若要取得此範例問卷,請點擊以下連結:LS3_em_tailoring.zip。

人口普查範例

概述

這是一個人口普查範例,詢問您的家戶中有多少人。

此範例示範群組層級的相關性如何讓問題「迴圈」更容易實現。建立第 1 人的群組後,我將該群組匯出。由於我使用了 p1_name 這類 qcode 變數名稱,而非 SGQA 代碼,因此可以使用文字編輯器快速編輯並多次重新匯入該群組(例如,每個重複群組約需 10 秒即可完成編輯與重新匯入,確保所有變數都具有唯一的變數名稱,且群組層級的邏輯正確無誤)。

您也可以使用複製問題功能,但速度不如上述建議的方式快。

這也示範了如何在問卷真正完成之前(例如,所有必要的群組都已完成時),避免顯示「完成」訊息。


展示的 EM 功能

  1. 群組層級相關性 - 後續群組(人員 1-5)僅會顯示至所指定的同住人數為止;
  2. 量身訂製(Tailoring) - 最終報告會彙整每位同住者的人口統計資料;
  3. 漸進式問題顯示 - 無論是逐組或一次全部顯示模式,後續問題都會在前面的問題回答後才顯示。


螢幕截圖

問卷會產生一份量身訂製的報告,顯示所指定同住人數的人口統計資料:



如果切換為逐題顯示模式,您會看到索引會針對問題進行量身訂製。由於使用者指出此人是女性,因此會詢問「她的名字是什麼」。而因為我們回答了「Mary」,下一個問題則會顯示「Mary 幾歲」?



下載

若要下載此問卷範例,請點擊這裡:LS3_group_relevance.zip。


串聯陣列篩選

概述

此問卷係根據 Joy Lane Research, LLC 所提供的問卷設計而成。


螢幕截圖

請注意以下幾點:

  • Q02 僅顯示在 Q01 中勾選的產品(透過使用 array_filter)
  • Q02 也會顯示「Another product」,即在 Q01 的「Other electronic」欄位中輸入的文字
  • Q04 僅顯示 Q02 中已勾選的產品(因此陣列篩選會串聯)
  • Q05 僅顯示 Q02 中未勾選的產品(使用串聯的 array_filter_exclude)




下載

請點擊以下連結下載上述範例:LS2_cascading_array_filter 問卷範例。


使用所有題型與屬性進行嵌入/量身訂製(Piping/Tailoring)

概述

如果您對變數的命名方式(SGQA 與 Qcode)感到困惑,您並不孤單。雖然主要文件說明了如何組成 Qcode 變數名稱,但沒有什麼比實際範例更直觀。此問卷展示了如何使用 ExpressionScript 存取問題屬性與回答。


在此範例中,建議您在編輯此問卷時關閉內建的 HTML 編輯器(或將其切換為彈出視窗模式)。HTML 編輯器在編輯模式下呈現大型 HTML 報告可能需要一分鐘或更久。


內容

  • 每種題型的範例
  • 包含所有可使用「其它」的題型,讓您了解這會如何影響變數命名
  • 所有接受預設值之題型的預設值
  • 量身訂製(Tailoring)- 頁面內與頁面外的報告,顯示全部 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。即使該問題的子問題 5 仍然保有值 14(例如,取消勾選第五個子問題後,您會再次看到值 14),但由於該值目前不相關,因此不會計入總和。所有不相關的資料會在送出時被清除(在資料庫中設為 NULL),但仍會保留在頁面上,以便使用者想要或需要改變答案時使用。



下載

若要下載我們的範例,請按一下此處:ls2_subquestion_relevance.lss。


使用逗號作為小數點分隔符號

概述

ExpressionScript 可確保數字欄位中只能輸入有效的數字。如果您輸入無效的數字,系統會警告您有錯誤(例如,在 fruity 佈景主題中,整個問題會變成紅色)。

請注意,數值在資料庫中一律會轉換為使用句點作為小數點分隔符號,這樣統計分析才能正常運作。

若要變更小數點分隔符號,請前往位於設定索引標籤下的文字元素選項,並找到小數點記號功能。


如需進一步了解什麼是小數點分隔符號,請按一下[https://en.wikipedia.org/wiki/Radix_point


使用小數點分隔符號的問題類型

  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;頁面上的第二個隨機問題則會是 Q2、Q5 或 Q8。



以下是我第一次測試此問卷時產生的隨機順序。



第二次測試問卷時,產生了不同的隨機順序。



但是,當我切換為法文(未重新開始問卷)時,隨機順序保持不變。



下載

若要下載上述範例,請點擊以下連結:Randomization_Group_Test.lss


每個題組隨機詢問一個問題

概述

此問卷示範如何設定問卷,使每個題組隨機顯示一個問題。問卷中有 5 個題組,每組 6 個問題。一開始,在題組 0 中,會填入五個名為 ask1-ask5 的隱藏 Equation 問題。每個問題的問題文字欄位中都有 {floor(rand(1,6.9999))},這表示變數 ask1-ask5 各自的值會介於 1 到 6 之間。接著,題組中的每個問題都有類似 "ask1==N" 的相關性等式,其中 N 是該問題在題組中的順序(因此題組 1 的第三個問題,其相關性等式為 "ask1==3")。

此問卷在整份問卷同頁、按題組分頁以及逐題顯示模式下都同樣適用。由於隨機設定是在第一個題組中完成,而該題組實際上是隱藏的(因為所有 ask1-ask5 問題都是隱藏的),所以對同一位受訪者而言隨機結果保持不變;但每位不同的受訪者都會有不同的隨機結果。


示範的功能

  1. Equation 題型
  2. 隨機函數
  3. 條件式 (if) 函數


螢幕截圖

這是 Group0,它使用 Equation 題型為每個題組選取 1 到 6 的隨機值(最後一個題組除外,它只有 4 個問題)。請注意,"if()" 函數會先檢查 ask1 是否已設定值,如果已設定,就使用該值;如果尚未設定,則使用隨機值來設定 ask1 的值。



此題組顯示 Group0 中的變數 (ask4) 如何用來控制第四個題組中顯示哪一個問題。



下載

若要下載上述問卷範例,請點擊此處:題組內隨機問題的問卷範例。


在題組中隨機詢問指定數量的問題(問題的子集)

  此方法僅適用於同一題組內的所有隨機問題,且僅在使用按題組分頁或全部問題在單頁顯示格式時有效。



概觀

此問卷示範如何在群組中隨機顯示部分問題。例如,在群組內的 10 個問題中隨機顯示 5 個問題。

此問卷包含一個含有 10 個問題的群組。所有問題都被指定相同的隨機的群組名稱,因此頁面載入時會以隨機順序顯示。每個問題都設有一個相關性等式,條件是群組中所有其他問題的「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. 隨機化

下載

若要下載上述範例,請點擊以下連結:10 題隨機顯示 5 題問卷範例。

評分使用者輸入的產品清單

概觀

以下範例示範如何請使用者列出他們感興趣的一組產品,然後讓他們對這些產品進行評分。


示範的 ES 功能

  1. 量身訂製答案 - 在對產品評分時,標籤來自前一個多選問題的評論欄位
  2. 量身訂製量表 - 許多進階問題選項(例如量表標題)也可以量身訂製。


螢幕截圖

此圖顯示,由於僅選取了產品 1、3 和 5,因此只會顯示這 3 項(使用 array_filter 屬性)。此外,第二個問題中的列標籤,若評論欄位中未輸入任何內容,則顯示產品編號,否則顯示評論欄位的內容。



此圖顯示如何指定量身訂製的答案:



以下是該問題的顯示邏輯檔案,可讓我們確認條件邏輯是否按預期運作(例如,檢查是否有語法錯誤):



下圖顯示一個群組,您可在其中指定 5 點評分量表(選項 1-5)、量表標題,以及要評分的產品。最後一個問題顯示陣列問題的每個部分都可以量身訂製:



下圖顯示最後一個問題的邏輯檔案檢視。如您所見,子問題、答案和量表標題都可以量身訂製。


下載

若要下載上述問卷範例,請點擊以下連結:評分使用者輸入的產品清單問卷範例。