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 Engine - คู่มือเริ่มต้นอย่างรวดเร็ว
  17. ฟีเจอร์ขั้นสูงและฟีเจอร์ที่ไม่ได้จัดหมวดหมู่
  18. คำถามที่พบบ่อยทั่วไป
  19. การแก้ไขปัญหา
  20. วิธีแก้ปัญหาชั่วคราว (Workarounds)
  21. สัญญาอนุญาต
  22. บันทึกการเปลี่ยนแปลงของเวอร์ชัน
  23. ปลั๊กอิน
 Actions

ExpressionScript Engine - คู่มือเริ่มต้นอย่างรวดเร็ว

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. การนำทาง/การแตกกิ่ง (Navigation/Branching) - ช่วยให้คำตอบของผู้ตอบแบบสำรวจเปลี่ยนลำดับการแสดงคำถามได้;
  2. การปรับแต่งข้อความ/Piping (Tailoring/Piping) - ช่วยให้คุณเรียบเรียงคำถาม (เช่น อ้างอิงถึงคำตอบก่อนหน้า หรือเปลี่ยนรูปประโยคตามอายุหรือเพศของกลุ่มตัวอย่าง) หรือกำหนดวิธีสร้างรายงานแบบกำหนดเอง (เช่น คะแนนการประเมินหรือคำแนะนำที่ปรับให้เหมาะสม);
  3. การตรวจสอบ - ตรวจสอบให้แน่ใจว่าคำตอบผ่านเกณฑ์บางอย่าง เช่น ค่าต่ำสุดและสูงสุด หรือรูปแบบการป้อนข้อมูลที่กำหนด

ES มอบวิธีที่เข้าใจง่ายในการกำหนดตรรกะสำหรับแต่ละฟีเจอร์เหล่านี้ เกือบทุกสิ่งที่คุณเขียนเป็นสมการทางคณิตศาสตร์มาตรฐานได้ถือเป็นนิพจน์ที่ใช้ได้

ปัจจุบัน ES มีฟังก์ชันให้ใช้งาน 70 ฟังก์ชัน และสามารถขยายเพิ่มเติมได้อย่างง่ายดาย นอกจากนี้ ยังช่วยให้คุณเข้าถึง ตัวแปรต่าง ๆ ได้โดยใช้ชื่อตัวแปรที่มนุษย์อ่านเข้าใจได้ (แทนที่จะใช้ ชื่อ SGQA)

ส่วนถัดไปจะแสดงจุดหลักที่มีการใช้ ES


ความสัมพันธ์กัน (การควบคุมการนำทาง/การแตกกิ่ง)

แบบสำรวจบางแบบใช้ "Goto Logic" เช่น หากคุณตอบ Question1 ด้วยตัวเลือก C คุณจะถูกส่งไปยัง Question5 วิธีนี้มีข้อจำกัดมาก เพราะตรวจสอบได้ยาก นอกจากนี้ยังเสียหายได้ง่ายเมื่อคุณต้องเรียงลำดับคำถามใหม่ ในทางกลับกัน ES ใช้ สมการความสัมพันธ์กันแบบบูลีน เพื่อกำหนดเงื่อนไขทั้งหมดที่คำถามอาจใช้ได้ หากคำถามมีความสัมพันธ์กัน คำถามนั้นจะแสดง มิฉะนั้นจะไม่เกี่ยวข้อง และค่า "NULL" จะถูกจัดเก็บในฐานข้อมูล

หมายเหตุ: ซึ่งคล้ายกับสิ่งที่ทำได้ผ่านตัวแก้ไขเงื่อนไข แต่ ES ช่วยให้คุณกำหนดเกณฑ์ที่ซับซ้อนและทรงพลังกว่ามากได้อย่างง่ายดาย (และให้คุณใช้ชื่อตัวแปรแทนตัวระบุ SGQA)




เพื่อให้เข้าใจแนวคิดเรื่องความสัมพันธ์กันได้ดียิ่งขึ้น เรามาดูแบบสำรวจต่อไปนี้ซึ่งคำนวณดัชนีมวลกาย (BMI) ของผู้ตอบแบบสำรวจ หากต้องการดาวน์โหลด ให้คลิกลิงก์ต่อไปนี้: ตัวอย่างแบบสำรวจดัชนีมวลกาย

สมการความสัมพันธ์กันแสดงอยู่ด้านล่างในคอลัมน์ ความสัมพันธ์กัน ถัดจากชื่อตัวแปร ค่าความสัมพันธ์กันของ weight, weight_units, height และ height_units เป็น 1 ทั้งหมด (ค่าเริ่มต้น) ซึ่งหมายความว่าคำถามเหล่านั้นจะแสดงเสมอ อย่างไรก็ตาม ความสัมพันธ์กันของ BMI คือ {!is_empty(height) and !is_empty(weight)} ซึ่งหมายความว่า BMI จะถูกคำนวณก็ต่อเมื่อผู้ตอบป้อนค่าทั้งส่วนสูงและน้ำหนัก (เพื่อหลีกเลี่ยงความเสี่ยงที่จะเกิดข้อผิดพลาดการหารด้วยศูนย์) นอกจากนี้ คำถาม "Report" จะแสดงก็ต่อเมื่อผู้ตอบตอบคำถามหลักทั้งสี่ข้อ (height, heightunits, weight, weightunits)



หมายเหตุ: รูปภาพข้างต้นมาจากไฟล์ตรรกะของแบบสำรวจ ซึ่งช่วยให้คุณตรวจหาข้อผิดพลาดทางไวยากรณ์ได้ก่อนเปิดใช้งานแบบสำรวจ


ความสัมพันธ์กันจะแสดงและแก้ไขได้เมื่อ:

  • คุณต้องการดู/แก้ไขความสัมพันธ์กันระดับคำถาม
  • คุณต้องการดู/แก้ไขความสัมพันธ์กันระดับกลุ่ม


การดู / การแก้ไขความสัมพันธ์กันระดับคำถาม

สมการนี้คำนวณดัชนีมวลกาย (BMI) โดยจะถามก็ต่อเมื่อผู้ตอบป้อนส่วนสูงและน้ำหนักของตน



นี่คือหน้าจอแก้ไขสำหรับคำถาม "BMI"



โปรดทราบว่าคุณไม่ต้องใช้วงเล็บปีกกาเมื่อป้อนสมการความสัมพันธ์กัน


การดู / การแก้ไขความสัมพันธ์กันระดับกลุ่ม

เรามาดูอีกตัวอย่างหนึ่ง - แบบสำรวจสำมะโนประชากรอย่างง่าย หากต้องการดาวน์โหลด ให้คลิกลิงก์ต่อไปนี้: ตัวอย่างแบบสำรวจสำมะโนประชากร

หน้าแรกถามว่ามีกี่คนที่อาศัยอยู่กับคุณ และจัดเก็บค่าไว้ในตัวแปร "cohabs" หน้านี้จะแสดงก็ต่อเมื่อคุณมีผู้อยู่อาศัยร่วมกันมากกว่าหนึ่งคน (แสดงสำหรับบุคคลที่สองที่อาศัยอยู่กับคุณ) นอกจากนี้ p2name, p2age, p2sum จะแสดงก็ต่อเมื่อคำถามก่อนหน้าแต่ละข้อมีการตอบคำถามแล้ว



ดังนั้น กลุ่มจึงมีเกณฑ์ความสัมพันธ์กันระดับคำถามด้วย โดยบางคำถามจะปรากฏก็ต่อเมื่อคุณตอบคำถามบางข้อก่อนหน้า (เช่น p2age จะแสดงหากมีการตอบ p2name) ES จะรวมความสัมพันธ์กันระดับกลุ่มและระดับคำถามให้คุณ คำถามในกลุ่มจะถูกถามก็ต่อเมื่อกลุ่มโดยรวมมีความสัมพันธ์กัน จากนั้นจะถามเฉพาะชุดย่อยของคำถามภายในกลุ่มที่มีความสัมพันธ์กันเท่านั้น

นี่คือภาพหน้าจอสำหรับการแก้ไขความสัมพันธ์กันระดับกลุ่มของ Cohabitant 2:



โปรดทราบว่าคุณไม่ต้องใช้วงเล็บปีกกาเมื่อป้อนสมการความสัมพันธ์กัน

การปรับแต่งข้อความ/Piping

ES ช่วยให้คุณปรับแต่งข้อความตามเงื่อนไขได้ทั้งแบบง่ายและแบบซับซ้อน บางครั้งคุณเพียงต้องการแทนที่ค่าอย่างง่าย เช่น "คุณบอกว่าคุณซื้อ [ผลิตภัณฑ์] คุณชอบอะไรมากที่สุดเกี่ยวกับผลิตภัณฑ์นี้" บางครั้งคุณต้องการแทนที่ค่าตามเงื่อนไข เช่น "คุณ[นาย/นาง] [นามสกุล] ยินดีทำแบบสำรวจของเราหรือไม่" ในกรณีนี้ คุณต้องการใช้ "นายหรือนาง" ตามเพศของบุคคลนั้น ในบางครั้งคุณอาจต้องการการแทนที่ที่ซับซ้อนกว่านั้น (เช่น อิงจากการคำนวณทางคณิตศาสตร์) ES รองรับการปรับแต่งข้อความ/Piping ทุกประเภทเหล่านี้


สมการตามเงื่อนไข

ตัวอย่างดัชนีมวลกาย (BMI) แสดงความสามารถในการคำนวณ 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 engine ควรประมวลผล


การตรวจสอบ

ES ควบคุมการทำงานของตัวเลือกคำถามขั้นสูงส่วนใหญ่ ซึ่งควบคุมด้านต่าง ๆ เช่น จำนวนคำตอบต่ำสุด/สูงสุด ค่าแต่ละค่าต่ำสุด/สูงสุด ผลรวมต่ำสุด/สูงสุด และการตรวจสอบว่าค่าที่ป้อนตรงกับรูปแบบสตริงที่กำหนดหรือไม่ ค่าใดก็ตามในช่องเหล่านี้จะถือเป็นนิพจน์ ดังนั้นคุณจึงสามารถกำหนดเกณฑ์ต่ำสุด/สูงสุดที่มีความสัมพันธ์แบบมีเงื่อนไขที่ซับซ้อนกับคำถามอื่นได้

ในทุกกรณีเหล่านี้ เนื่องจากคุณสมบัติคำถามขั้นสูงจะถือเป็นนิพจน์เสมอ คุณจึงไม่ต้องใช้วงเล็บปีกกาเมื่อระบุค่า

หน้า แบบสำรวจตัวอย่าง แสดงตัวอย่างที่ใช้งานได้จริงมากมายซึ่งมีนิพจน์การตรวจสอบหลากหลายรูปแบบ

ExpressionScript - การนำเสนอ

หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับ ExpressionScript และวิธีใช้นิพจน์ต่าง ๆ เพื่อปรับปรุงแบบสำรวจของคุณ โปรดคลิกลิงก์นี้