ExpressionScript Engine - คู่มือเริ่มต้นอย่างรวดเร็ว
From LimeSurvey Manual
คู่มือเริ่มต้นอย่างรวดเร็ว
ใน LimeSurvey คุณสามารถปรับแต่งแบบสำรวจของคุณเพิ่มเติมได้โดยใช้ ExpressionScript (ตัวย่อ: ES) หมายเหตุ: "ExpressionScript เดิมมีชื่อว่า Expression Manager (EM) ในเวอร์ชันก่อนหน้า หากคุณพบคำว่า Expression Manager ที่ใด นั่นคือชื่อเดิมของ ES"
ES สามารถใช้เพื่อกำหนดสิ่งต่อไปนี้:
- การนำทาง/การแตกกิ่ง (Navigation/Branching) - ช่วยให้คำตอบของผู้ตอบแบบสำรวจเปลี่ยนลำดับการแสดงคำถามได้;
- การปรับแต่งข้อความ/Piping (Tailoring/Piping) - ช่วยให้คุณเรียบเรียงคำถาม (เช่น อ้างอิงถึงคำตอบก่อนหน้า หรือเปลี่ยนรูปประโยคตามอายุหรือเพศของกลุ่มตัวอย่าง) หรือกำหนดวิธีสร้างรายงานแบบกำหนดเอง (เช่น คะแนนการประเมินหรือคำแนะนำที่ปรับให้เหมาะสม);
- การตรวจสอบ - ตรวจสอบให้แน่ใจว่าคำตอบผ่านเกณฑ์บางอย่าง เช่น ค่าต่ำสุดและสูงสุด หรือรูปแบบการป้อนข้อมูลที่กำหนด
ES มอบวิธีที่เข้าใจง่ายในการกำหนดตรรกะสำหรับแต่ละฟีเจอร์เหล่านี้ เกือบทุกสิ่งที่คุณเขียนเป็นสมการทางคณิตศาสตร์มาตรฐานได้ถือเป็นนิพจน์ที่ใช้ได้
ปัจจุบัน ES มีฟังก์ชันให้ใช้งาน 70 ฟังก์ชัน และสามารถขยายเพิ่มเติมได้อย่างง่ายดาย นอกจากนี้ ยังช่วยให้คุณเข้าถึง ตัวแปรต่าง ๆ ได้โดยใช้ชื่อตัวแปรที่มนุษย์อ่านเข้าใจได้ (แทนที่จะใช้ ชื่อ SGQA)
ส่วนถัดไปจะแสดงจุดหลักที่มีการใช้ ES
ความสัมพันธ์กัน (การควบคุมการนำทาง/การแตกกิ่ง)
แบบสำรวจบางแบบใช้ "Goto Logic" เช่น หากคุณตอบ Question1 ด้วยตัวเลือก C คุณจะถูกส่งไปยัง Question5 วิธีนี้มีข้อจำกัดมาก เพราะตรวจสอบได้ยาก นอกจากนี้ยังเสียหายได้ง่ายเมื่อคุณต้องเรียงลำดับคำถามใหม่ ในทางกลับกัน ES ใช้ สมการความสัมพันธ์กันแบบบูลีน เพื่อกำหนดเงื่อนไขทั้งหมดที่คำถามอาจใช้ได้ หากคำถามมีความสัมพันธ์กัน คำถามนั้นจะแสดง มิฉะนั้นจะไม่เกี่ยวข้อง และค่า "NULL" จะถูกจัดเก็บในฐานข้อมูล
เพื่อให้เข้าใจแนวคิดเรื่องความสัมพันธ์กันได้ดียิ่งขึ้น เรามาดูแบบสำรวจต่อไปนี้ซึ่งคำนวณดัชนีมวลกาย (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()" ซ้อนกันเพื่อจัดหมวดหมู่บุคคลตั้งแต่น้ำหนักต่ำกว่าเกณฑ์ไปจนถึงอ้วนอันตราย คุณสามารถดูสมการของมันได้โดยตรวจสอบตรรกะของมัน:

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

คำถาม คำตอบ และรายงานที่ปรับแต่งแล้ว
รายงาน BMI มีลักษณะดังนี้:

นี่คือหน้าต่างแก้ไขของคำถามเดียวกัน

สิ่งใดก็ตามที่อยู่ในวงเล็บปีกกาจะถือเป็นนิพจน์ และมีการเน้นไวยากรณ์ (แยกตามสี) ในภาพก่อนหน้า หากคุณพิมพ์ผิด (เช่น สะกดชื่อตัวแปรหรือฟังก์ชันผิด หรือใช้ตัวแปรหรือฟังก์ชันที่ไม่ได้กำหนด) ES จะแสดงข้อผิดพลาด ในตัวอย่างด้านล่าง:
- heightunit.shown เป็นตัวแปรที่ไม่ได้กำหนด (ที่ถูกต้องคือ heightunits.shown) และ
- "rnd()" เป็นฟังก์ชั่นที่ไม่ได้กำหนด (ชื่อฟังก์ชันที่ถูกต้องคือ "round()")
ในทั้งสองกรณี ข้อผิดพลาดจะอยู่ในกรอบสีแดงเพื่อให้สังเกตเห็นและแก้ไขได้ง่ายขึ้น

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