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 Engine - Quick start guide and the translation is 100% complete.


快速入門指南

在 LimeSurvey 中,您可以透過 ExpressionScript(簡稱:ES)進一步自訂您的問卷。 補充說明:「ExpressionScript 在早期版本中稱為 Expression Manager(EM)。若您在其他地方看到 Expression Manager,那只是 ES 的舊名稱。」

ES 可用於指定下列功能:

  1. 導覽/分支 - 讓受訪者的答案改變問題的顯示順序;
  2. 客製化/嵌入 - 協助您撰寫問題的措辭(例如引用先前的答案,或依據受訪者的年齡或性別調整句子用語),或產生自訂報告(例如評估分數或客製化建議);
  3. 驗證 - 確保答案符合特定條件,例如最小值與最大值,或特定的輸入格式。

ES 提供直覺的方式來為上述各項功能指定邏輯。幾乎所有能以標準數學等式寫出的內容,都是有效的運算式。

ES 目前提供 70 個函數,並且可以輕鬆擴充以支援更多函數。此外,您還可以使用易於閱讀的變數名稱(而非 SGQA 名稱)來存取您的 變數。

以下各節將介紹 ES 的主要使用位置。


相關性(控制導覽/分支)

有些問卷使用「跳轉邏輯(Goto Logic)」,例如當您以選項 C 回答 Question1 時,就會被導向 Question5。這種做法非常受限,因為很難加以驗證;此外,當您需要重新排序問題時,也很容易失效。相對地,ES 使用布林相關性等式來指定問題可能有效的所有條件。若問題具有相關性,就會顯示該問題;否則視為不適用,並在資料庫中儲存「NULL」值。

注意:這與透過條件編輯器所能完成的功能類似,但 ES 讓您能輕鬆指定更複雜、更強大的條件(且可使用變數名稱而非 SGQA 識別碼)。




為了更了解相關性的概念,讓我們來看下列計算受訪者身體質量指數(BMI)的問卷。若要下載,請點擊以下連結:身體質量指數問卷範例。

相關性等式顯示在下方變數名稱後面的相關性欄中。weight、weight_units、height 與 height_units 的相關性值皆為 1(預設值),表示這些問題一律會顯示。然而,BMI 的相關性為 {!is_empty(height) and !is_empty(weight)},這表示只有在受訪者同時輸入身高與體重的值時,才會計算 BMI(藉此避免出現除以零的錯誤)。此外,只有在受訪者回答全部四個主要問題(height、heightunits、weight、weightunits)時,才會顯示問題「Report」。



注意:上圖來自問卷邏輯檔案,可讓您在啟用問卷之前檢查語法錯誤。


在下列情況下會顯示並可編輯相關性:

  • 您想查看/編輯問題層級的相關性
  • 您想查看/編輯群組層級的相關性


查看/編輯問題層級的相關性

此等式用於計算身體質量指數(BMI)。只有在受訪者輸入身高與體重時才會詢問此問題。



這是「BMI」問題的編輯畫面。



請注意,輸入相關性等式時不需使用大括號。


查看/編輯群組層級的相關性

現在讓我們來看另一個範例 - 一份簡單的人口普查問卷。若要下載,請點擊以下連結:人口普查問卷範例。

第一頁會詢問有多少人與您同住,並將結果儲存在「cohabs」變數中。只有在同住者超過一人時才會顯示此頁(會針對第二位與您同住的人顯示)。此外,只有在 p2name、p2age、p2sum 前一個問題含有作答結果時,才會顯示它們。



因此,群組同樣具有問題層級的相關性條件,使得某些問題只有在您先回答了特定問題後才會出現(例如:若已回答 p2name,則會顯示 p2age)。ES 會為您合併群組與問題層級的相關性。只有在整個群組具有相關性時,群組中的問題才會被詢問;接著,只會詢問群組內具有相關性的那部分問題。

以下是編輯Cohabitant 2群組層級相關性的畫面截圖:



請注意,輸入相關性等式時不需要使用大括號。

客製化/管道傳遞

ES 可讓您輕鬆進行簡單與複雜的條件式客製化。有時您只需要簡單的替換,例如:「您表示購買了 [產品]。您最喜歡它的哪一點?」。有時您需要條件式替換,例如:「[先生/女士] [姓氏],您願意填寫我們的問卷嗎?」。在這種情況下,您希望依據對方的性別使用「先生」或「女士」。其他時候,您可能需要更複雜的替換(例如依據數學運算)。ES 支援上述各種類型的客製化/管道傳遞。


條件等式

身體質量指數範例展示了如何計算一個人的 BMI,即使讓他們以兩種不同的單位輸入身高和體重(公分與英寸、公斤與磅):



在此範例中,weightkg 為 {if(weightunits == "kg", weight, weight * 0.453592)}。此 "if()" 函數的意思是:如果受訪者以公斤輸入體重,就使用該值;否則將輸入值(另一個選項為磅)乘以 0.453592,將其換算為公斤。heightm 變數採用類似的方法計算此人的身高(以公尺為單位,即公分數/100),即使他是以英寸輸入身高(1 公尺=3.28084 英寸)。

BMI 的計算方式為:{weightkg / (heightm * heightm)}。

最後,報告會依條件為受訪者客製化訊息,告知對方所輸入的內容。(例如:「您表示您身高 2 公尺,體重 70 公斤。」)

在下圖中,weightstatus 使用巢狀的 "if()" 陳述式,將此人分類為體重過輕到重度肥胖。您可以透過檢視其邏輯來查看其等式:



從此問題的編輯視窗中,您可以看到兩點:

  1. 客製化時,運算式必須以大括號括起來
  2. 運算式可以跨越多行,例如此範例中,是為了讓巢狀條件邏輯更易於閱讀。



客製化的問題、答案與報告

注意:如果答案選項以下拉選單的形式顯示在同一個問題頁面上,動態客製化可能無法運作。這是因為客製化會插入 <span> 標籤,而該標籤在下拉選項中是無效的。

BMI 報告如下所示:



以下是同一個問題的編輯視窗。



大括號內的任何內容都會被視為運算式,並在上圖中以語法醒目提示(色彩標示)顯示。如果有任何打字錯誤(例如拼錯或未定義的變數名稱或函數),ES 會顯示錯誤。在下方的範例中:

  • heightunit.shown 是未定義變數名稱(正確應為 heightunits.shown),以及
  • "rnd()" 是未定義函數(正確的函數名稱為 "round()")。

在這兩種情況下,錯誤都會以紅色方框標示,讓您更容易發現並修正。



您也可以看到,可以快速建立複雜的報告,例如輸入值的表格或客製化建議。

請記住,所有客製化都必須以大括號括住運算式,這樣 LimeSurvey 才能得知問題中哪些部分是自由文字,哪些部分應由 ExpressionScript 引擎解析。


驗證

ES 控制著大多數進階問題選項的運作方式。這些選項控制的項目包括答案的最小/最大數量、個別值的最小/最大值、總和的最小/最大值,以及檢查輸入值是否符合指定的字串模式。這些欄位中的任何值都會被視為運算式,因此您可以設定與其他問題具有複雜條件關係的最小/最大條件。

在所有這些情況下,由於進階問題屬性一律被視為運算式,因此指定時不需要使用大括號。

範例問卷頁面顯示了許多包含各種驗證運算式的實際範例。

ExpressionScript - 呈現

若要進一步了解 ExpressionScript,以及如何使用不同的表達式來強化您的問卷,請點選以下連結。