設定條件
From LimeSurvey Manual
LimeSurvey 條件概述
LimeSurvey 具有非常強大的邏輯分支功能。您可以點擊位於每個問題工具列上的設定條件按鈕 -
- 來使用此功能。
在本章中,我們將說明:
- 您可以在 LimeSurvey 中找到哪些條件
- 您可以與無法使用條件做哪些事情
- 設定簡單或較複雜的條件需要學習哪些步驟
如需逐步的影片說明,請參閱此教學,或下載條件範例問卷:LimeSurvey_Survey_Setting_Conditions.zip。
顯示/隱藏分支與跳躍分支
您可以使用 LimeSurvey 設計邏輯分支,也就是說,您可以決定只有在符合某些條件時才顯示特定問題,例如「如果問題 Y 的答案為 Z,則顯示問題 X」。
我們採用的方式是實作顯示/隱藏分支邏輯:
- 您可以為問卷中的每個問題定義一個條件或一組條件 - 如果符合條件,則會顯示該問題:

此方式不同於其他軟體有時採用的跳躍分支邏輯。在跳躍分支邏輯中,符合條件後的動作是跳至另一個問題(也就是隱藏中間的所有問題)。LimeSurvey 並未實作此跳躍分支邏輯方法。取而代之的是,如果您想要跳過一系列問題,只需對所有不希望顯示的問題設定相同的條件即可。例如,若您想在問題 2 上設定的跳躍條件為「如果問題 1 的答案為『是』,則跳至問題 5」,您只需:
- 為問題 2、3 和 4 設定條件,僅在「問題 1 的答案不是『是』」時才顯示
LimeSurvey 允許您將條件從一個問題「複製」到一系列其他問題,讓您能輕鬆對多個問題設定相同的條件(也就是實作跳躍分支邏輯)。在上述範例中,您可以先為問題 2 設定條件,然後在同一個畫面中,將該條件複製到問題 3 和問題 4。
支援的條件類型
基本上,條件可以比較數值,並傳回真或假。
可供比較的值為先前問題的答案。例如,如果您在問題 1 回答「是」,則問卷填答者將會看到問題 2:

此時,了解哪些項目屬於條件編輯器可用的問題項目非常重要。
問題項目可以是:
- 簡單問題(除陣列問題以外的所有問題類型)
- 例如:開放性問題、單選或下拉式選單,甚至是多選問題
- 或陣列問題中的一列(陣列雙重尺度和陣列多重彈性問題除外)
- 例如:5 點單選按鈕陣列或標籤陣列問題
- 或陣列雙重尺度問題的左半部或右半部
- 或陣列彈性問題的每個儲存格
- 常數值
- 例如:「如果您對以下問題的回答超過 18 歲」

- 參與者的個人資料: 若要使用問卷參與者表中的資料,「匿名作答結果」必須設為否。此選項位於問卷參與者設定面板中。

支援多種比較運算子 - 從簡單的「等於」到進階的「正規表示式」:
- 基本運算子包括「等於」與「不等於」
- 也提供大於/小於系列運算子,通常用於數值型的問題項目
- 請注意,數值欄位的比較使用數值順序。例如,2 < 10
- 如果您使用的問題項目類型為文字,則條件可能會被評估為 "2" > "10"(字串順序)!
- 數值問題以及文字問題(設定了 'numbers_only' 屬性時)會使用數值順序進行比較
- 也提供使用正規表示式的進階比較運算子(別擔心!如果您不知道這是什麼,就代表您不需要它)
- 模式不需要以 '/' 字元括住
- 例如:[a-zA-Z]$
如何組合條件?
您可以使用AND 和OR 邏輯運算子,將簡單條件組合起來,以建立複雜條件。

不過,請務必了解,LimeSurvey 會自動判斷要套用哪一種邏輯運算子。這表示使用OR 或AND 運算子是依據條件的內容來決定。在上述範例中,只有一個情境。這表示 LimeSurvey 使用布林代數,也就是會先「計算」or 運算子。
我們稍後會進一步說明複雜條件。讓我們先from基本條件開始。
條件設定器
首先,您需要進入條件設定器。為此,請點選您要套用條件的問題:

接著,請在頂部問題列中找到設定條件按鈕:

進入後,將顯示以下頁面:

條件設定器面板可分為三個部分:
條件設定器工具列
工具列中提供以下選項:

- 顯示該題條件:點選此按鈕可快速查看目前已套用於該問題的現有條件。
- 增加並編輯條件:這是點選設定條件按鈕後自動開啟的預設頁面。它分為兩個部分:(1) 顯示所有現有條件和情境的表格,以及 (2) 新增/編輯條件選單。
- 複製條件:有時您希望將相同的條件套用到 X 個問題,以便最終顯示問題Y。為此,請點選複製條件。系統會開啟一個新視窗,顯示已新增至您問題(我們稱之為問題3)的現有條件。若要將這些條件新增至問題5,請勾選您要複製的條件,選擇問題5,然後點選面板左下方的複製條件按鈕。如需更多資訊,請繼續閱讀以下wiki 章節。
- 儲存並關閉:完成變更後,點選儲存並關閉即可儲存您的條件。
- 移至問題::若要在不離開條件設定器面板的情況下移至其他問題,請使用此選項,從下拉式選單中選擇您要套用條件的下一個問題。請注意,下拉式選單會顯示問卷中位於目前問題之前和之後的問題。
- 關閉:如果您想在不進行任何變更的情況下離開面板,可以直接前往設定/結構索引標籤並選擇所需的選項,或點選位於畫面右上方的關閉。
現有條件概覽
此區段顯示一個表格,其中包含某個問題的所有現有情境和條件。您可以在此執行某些操作:

- 在右上方提供三個操作:
- 快速添增條件 - 加快新增條件的流程(請參閱下方以了解所有選項)
- 重新編號情境 - 點選後,情境將從一開始以遞增數字重新編號。請注意,只有在您的問題套用了兩個或更多情境時,才會顯示此選項。
- 刪除所有條件 - 透過此操作,您可以刪除套用於您問題的所有現有條件和情境。

- 在每個情境的編號旁有三個按鈕,可讓您執行以下操作:
- 刪除情境
- 變更情境編號
- 為此情況添增條件 - 點選此按鈕可為所需的情境再新增一個條件

- 每個條件可執行兩個操作:
- 刪除條件
- 編輯條件 - 點選後,您可以在條件選單中編輯該條件

新增/編輯條件
畫面下半部為新增/編輯條件選單:

為了瞭解 LimeSurvey 中條件功能的運作方式,我們將先介紹基本條件。
基本條件的定義
基本條件就是不含任何 OR 或 AND 邏輯運算子的單一條件。
它由以下部分組成:
- 左運算元:測試值。您可以在條件編輯器中選取適當的索引標籤來選擇測試值的類型。它可以是先前的問題,或是問卷參與者屬性。

如果您(從先前問題索引標籤)選取了某個問題項目,且該問題使用預定義答案,則對應的預定義答案會顯示在比較值選擇的預定義索引標籤下。
- 比較運算子。從下拉式選單中選擇要套用的比較運算子(小於、小於或等於、等於、不等於、大於或等於、大於、正規表示式)。
- 右運算元:比較值。您可以在條件編輯器中選取適當的索引標籤來選擇比較值的類型。建立條件時,您可以選擇預定義值(答案)、常數、問題、問卷參與者屬性或正規表示式作為比較值:

基本條件範例及建立方式
- 顯示問題「AAMN」如果 「問題「Gender」的答案為預定義答案「Male」」
- 測試值 = 問題「Gender」的答案
- 比較運算子 = 等於
- 比較值 = 預定義答案代碼(此處為「Male」答案)

- 顯示問題「Alcohol」如果 「問題「Age」的答案大於或等於數值「18」」
- 測試值 = 問題「Age」的答案
- 比較運算子 = 大於或等於
- 比較值 = 常數值「18」

- 顯示問題「Alcohol」如果 「問題「BirthDate」的答案大於 2000-01-01」
- 測試值 = 問題「BirthDate」的答案
- 比較運算子 = 大於或等於
- 比較值 = 「2000-01-01」(常數欄位中的格式:2000-01-01)

- 顯示問題「Alcohol」如果 「「DrinkingHistory」參與者屬性」符合字串「Yes」。
- 測試值= 取自問卷參與者表格的「DrinkingHistory」值
- 比較運算子 = 等於
- 比較值 = 常數值「Yes」

LimeSurvey 中的條件與場景
預設條件組合
如前所述,LimeSurvey 會根據「上下文」自動決定在條件之間套用哪一種邏輯運算子(AND 或 OR)。
另請注意,您定義基本條件的順序並不重要,因為 LimeSurvey 會依照自己的邏輯自動重新排序。
讓我們詳細說明。請務必記住兩條規則:
第一條規則:具有相同測試值的條件以 OR 組合
當您有多個條件時,如果它們具有相同的測試值,就會以 OR 組合。當條件套用於屬於同一個問題的多個答案時即是如此。例如,下方對屬於同一問題的三個答案套用了條件:如果問題「FavColour」的答案等於「green」或問題「FavColour」的答案等於「red」或問題「FavColour」的答案等於「blue」,則問卷受訪者將會看到問題「BirthDate」:

第二條規則:具有不同受測值的條件以 AND 結合
當您有多個條件時,如果它們不具有相同的受測值,則會以 AND 結合。例如,下方是以多個不同先前問題為基礎的條件範例:「如果問題 'Alcohol' 的答案等於 'Y' 且問題 'Gender' 的答案等於 'F'」,則問卷受訪者將會看到問題 'Alcoholconsumption':

多選問題
多項選擇和帶評論的複選題問題類型會以兩種形式顯示:
- 複選群組形式:讓您針對相應問題的所有可能答案設定條件;
- 一組單選項目:讓您針對每個核取方塊individually設定條件。

複選群組形式
現在,讓我們透過一個範例來更清楚了解這兩種形式的差異。假設我們希望只有在受訪者至少勾選問題 'MultipleOrganizations' 下列出的其中一個受測答案時,才顯示問題 'Pointchoice'。
如上所述,複選群組形式可讓您針對相應問題的所有可能答案設定條件。因此,下方僅選取與職責相關的選項作為比較值:

如我們所見,由於一開始選擇了複選群組形式,這些條件會以 OR 結合:

在多選問題中以 AND 結合條件
現在,讓我們看一個類似的範例。不過這次我們只想找出最活躍的成員,以便向他們提出進一步的問題。為此,我們使用單選形式,它可讓您針對每個核取方塊individually設定條件。
在此範例中,如果 A 和 B 都被勾選,就會顯示問題 X:


完成後,您可以看到這兩個條件現在以 AND 結合。

這表示除非兩個受測值(所選的子問題)都符合,否則您的問題不會顯示。
場景的使用方式 - 在不同問題之間使用以 OR 結合的條件
您可能會說,有時即使條件設定在不同的問題上(也就是不同的受測值),仍需要以 OR 結合。這就是我們提供場景的原因!
場景的定義
場景就是手動將條件分組,其中某些條件的評估獨立於其他場景中的條件。由多個場景組合而成的複雜條件,只要有一個場景符合就會成立。換句話說,場景是遵循上述規則的條件邏輯分組,並且各場景之間以 OR 結合,以建構複雜條件。
上述所有說明都適用於每個場景中的條件。依預設,所有新條件都會建立在預設場景中,其識別碼為數字「1」。建立新條件時,您可以選擇是否將其加入預設場景。若要變更場景,只需使用其他識別碼即可。
將問題新增至其他場景
建立(或編輯)條件時,只需按一下「增加場景」按鈕,即可修改該條件所屬的場景:

如您所見,預設場景使用「1」作為識別碼。若要將條件新增至不同的場景,請在方塊中輸入其他數字以變更識別碼。
場景的編號 ID 並不重要,不同場景的 ID 可以是不連續的。

您可以按一下此圖示
,並為場景指派新的 ID,以變更指派給該場景的編號。

- 決定使用問卷的可列印版本時場景的顯示順序
- 合併兩個場景中的條件(若要將場景 10 與場景 1 合併,只需將場景 10 重新編號為場景 1)。
範例:建立三個場景
若要建立三個場景,您至少需要三個條件,並為每個條件指定不同的場景 ID。完成後,這些場景之間將透過「OR」運算子相連。例如,結果可能如下所示:

同一場景中的 AND 與 OR
在某些情況下,同一個場景中可能同時出現 AND 與 OR 邏輯運算子:

LimeSurvey 一律會先套用 OR。有關詳細資訊,您可以參閱下列維基百科文章:布林代數。
此外,運算順序也可以在「相關性等式」欄位中看到。以上述範例而言,相關性等式如下方醒目提示所示:

如您所見,OR 邏輯運算會額外加上一組括號,以告知軟體必須先「計算」這部分。
如何複製條件
當您想將套用於 Question5 的同一組條件套用至 Question10 時,可以使用複製條件功能。如此一來,您就不必手動重新建立先前問題所套用的條件。
若要開始複製條件,首先必須選擇已套用條件的問題(本例中為問題「LowQ」)。接著,選取您要複製的條件,並選擇要新增這些條件的問題(本例中為問題「Alcohol」)。

當您要複製位於不同場景下的一組條件,並將其套用至使用相同或不同場景 ID 編號的另一個問題時,請留意複製條件功能的運作方式。為了彙整可能出現的情況,請參閱下列範例:
- 您想將 QuestionX 中的 場景 1 - 條件 A、場景 1 - 條件 B、場景 7 - 條件 C 以及場景 7 - 條件 D 複製到 QuestionY
- QuestionY 已包含 場景 1 - 條件 A、場景 - 條件 C、場景 6 - 條件 E、場景 8 - 條件 F。
- 複製完成後,QuestionY 將套用下列條件:
- 場景 1:條件 A、條件 B、條件 C -> 條件 A 因已存在於 QuestionY 中而不會再被複製,只會複製條件 B。
- 場景 6:條件 E -> 不受影響
- 場景 7:條件 C、條件 D -> 建立新場景,並將這兩個條件新增至其中
- 場景 8:條件 F -> 不受影響
重設條件
若要快速重設問卷的所有條件,請按一下任一問卷相關設定,在頂端工具列中找到工具,然後按一下重設條件:

接著,請在下一頁確認您要繼續,所有條件隨即會被刪除。
注意事項
一般考量
在為問題設定條件之前,請先記住以下幾項基本規則:
- 只要為某個問題設定了單一條件,除非符合該條件,否則該問題不會顯示。
- 條件只能根據出現在設定條件之問題之前的問題來設定。
- 若您在建立條件之後變更了問卷中問題的順序,LimeSurvey 不會警告您變更後的順序是否會破壞任何條件。建議您在對問卷中問題和問題群組的順序感到滿意之後,再建立條件。
- 問卷啟用後,您仍然可以修改條件。請謹慎操作,因為系統不會進行「一致性檢查」。
使用「不適用」預設答案的條件

設定以下條件「若問題 'Gender' 的答案為「不適用」,則顯示問題 'FavColour'」,實際上的意思是「若問題 'Gender' 已顯示給問卷參與者,但參與者未送出答案,則顯示問題 'FavColour'」。
串連條件
若您對本身已有條件的問題再設定條件,問卷的行為可能會出乎您的預期。例如,一個典型的副作用是:如果您隱藏了某個問題群組中所有具有串連條件的問題,除非您依照下文說明修正這些條件,否則該群組的標題仍會顯示。


在上述範例中,若受訪者先前對問題 'AAMN' 回答「No (N)」,則會顯示問題 'Alcohol'。然而,如果受訪者在上一個問題('Gender')中未選擇答案「男性 (M)」,則問題 'AAMN' 最終可能不會顯示。在這種情況下,如果先前選擇了「男性 (M)」,就不會顯示問題 'Alcohol'。
若要顯示問題 'Alcohol',您必須將先前問題的條件複製到您正在編輯的問題。要顯示問題 'Alcohol',您需要設定以下一組條件:
- 若 'Gender' 的答案為「男性 (M)」,則顯示 'AAMN'
- 若 'Gender' 的答案為「男性 (M)」和 'AAMN' 的答案為 No (N),則顯示 'Alcohol'。
修正後,'Alcohol' 的正確條件組合應如下所示:

因此,如果您正在設計含有大量條件的複雜問卷,請務必以您所能想到的各種不同結果組合來測試問卷。
限制與因應方法
進度條
如果您建立的問卷中有許多問題因條件而被略過,進度條可能會跳過一批問題,或是問卷在 50% 時就結束。
為避免這種情況,應將可能被略過的問題安排在會顯示的問題之間。這樣,每個答案只會略過一到兩個問題。
例如,根據 Question1(是或否問題),若 Question1 的答案為「Yes」,將顯示 14 個問題(2A 至 15A);若答案為「No」,則顯示 2B 至 15B。
如果您將這些問題安排在同一個群組中,並依 2A、2B、3A、3B 等順序排列,就能得到幾乎正確的進度條;反之,若依 2A、3A、4A、[...]、2B、3B、4B、... 的順序排列,則視第一個問題的答案而定,進度條會從 0 到 50%,或從 50% 到 100%。
為「日期」題型設定固定比較值
您必須使用日期值的內部表示格式(YYYY-MM-DD)來定義固定比較值。
為多選題型中的「其它」選項設定條件
在多選題型中,您可以使用該題型所提供的"其它"作為有效選項,但無法對其設定條件。例如,第 1 題詢問 "您偏好使用哪種顏色?",核取方塊的答案選項為藍色、黑色和其它。如果參與者選擇藍色,您可以設定一個條件;如果參與者選擇黑色,您可以設定另一個條件。然而,如果參與者選擇 "其它" 並在文字方塊中輸入內容,則完全無法設定條件。 LimeSurvey 無法辨識參與者是否選擇了 "其它"。這不是錯誤,而是一項限制。
此題型並未為「其它」核取方塊記錄實際欄位。因此,要得知使用者是否回答了問題的「其它」部分,唯一的方法就是檢查其它輸入欄位中所填寫的文字是否為空。
然而,由於多項選擇問題的特殊處理方式,系統從未實作對「其它」文字輸入欄位的測試。
作為替代方案,請新增一個名為「Other」的明確答案選項,並且不要使用這些問題類型內建的「其他」選項。然後再新增一個簡短文本問題,當勾選此「Other」核取方塊時才會顯示該問題。
如何在布林運算式中使用括號?
無法使用!
如果您想設計如下的條件:
(condition1 OR condition2) AND (condition3 OR condition4),
您必須改為設定:
(condition1 AND condition3) OR
(condition1 AND condition4) OR
(condition2 AND condition3) OR
(condition2 AND condition4)