Actions

Công cụ ExpressionScript - Hướng dẫn bắt đầu nhanh

From LimeSurvey Manual

This page is a translated version of the page ExpressionScript Engine - Quick start guide and the translation is 100% complete.


Hướng dẫn bắt đầu nhanh

Trong LimeSurvey, bạn có thể tùy chỉnh thêm khảo sát của mình thông qua việc sử dụng ExpressionScript (viết tắt: ES). Sidenote: "ExpressionScript được đặt tên là Trình quản lý biểu thức (EM) trong phiên bản trước. Nếu bạn đọc Trình quản lý biểu thức ở đâu đó thì đó chỉ là tên cũ của ES."

ES có thể được sử dụng để chỉ định những điều sau:

  1. Navigation/Branching - cho phép câu trả lời của người trả lời thay đổi thứ tự hiển thị câu hỏi;
  2. Tailoring/Piping - giúp bạn diễn đạt câu hỏi (chẳng hạn như đề cập đến câu trả lời trước hoặc câu liên hợp dựa trên độ tuổi hoặc giới tính của đối tượng của bạn) hoặc cách tạo báo cáo tùy chỉnh (như điểm đánh giá hoặc lời khuyên phù hợp);
  3. Xác thực - đảm bảo rằng câu trả lời vượt qua các tiêu chí nhất định, như giá trị tối thiểu và tối đa hoặc một mẫu đầu vào nhất định.

ES cung cấp một cách trực quan để xác định logic cho từng tính năng đó. Gần như bất cứ thứ gì bạn có thể viết dưới dạng phương trình toán học tiêu chuẩn đều là một biểu thức hợp lệ.

ES hiện cung cấp quyền truy cập vào 70 chức năng và có thể dễ dàng mở rộng để hỗ trợ nhiều hơn. Nó cũng cho phép bạn truy cập các biến

bằng cách sử dụng tên biến mà con người có thể đọc được (chứ không phải tên SGQA).

Các phần sắp tới sẽ trình bày những vị trí chính mà ES được sử dụng.


Mức độ liên quan (Kiểm soát điều hướng/phân nhánh)

Một số khảo sát sử dụng "Goto Logic", chẳng hạn như nếu bạn trả lời Câu hỏi 1 bằng tùy chọn C, bạn sẽ được chuyển hướng đến Câu hỏi 5. Cách tiếp cận này rất hạn chế vì rất khó để xác nhận nó. Hơn nữa, nó dễ bị hỏng khi bạn phải sắp xếp lại các câu hỏi. Mặt khác, ES sử dụng Phương trình liên quan Boolean để chỉ định tất cả các điều kiện mà theo đó một câu hỏi có thể hợp lệ. Nếu câu hỏi có liên quan thì câu hỏi sẽ được hiển thị, nếu không, câu hỏi đó sẽ không được áp dụng và giá trị "NULL" được lưu trữ trong cơ sở dữ liệu.

Lưu ý: Điều này tương tự như những gì có thể được thực hiện thông qua Trình soạn thảo điều kiện, nhưng ES cho phép bạn dễ dàng chỉ định các tiêu chí phức tạp và mạnh mẽ hơn nhiều (và cho phép bạn sử dụng tên biến thay vì định danh SGQA).




Để hiểu rõ hơn về khái niệm liên quan, chúng ta hãy tập trung vào cuộc khảo sát sau đây tính toán Chỉ số khối cơ thể (BMI) của những người trả lời khảo sát. Để tải xuống, hãy nhấp vào liên kết sau: Ví dụ khảo sát chỉ số khối cơ thể.

Phương trình liên quan được hiển thị bên dưới trong cột Mức độ liên quan sau tên biến. Các giá trị liên quan của trọng lượng, đơn vị cân nặng, chiều cao và đơn vị chiều cao đều là 1 (giá trị mặc định), nghĩa là những câu hỏi đó luôn được hiển thị. Tuy nhiên, mức độ liên quan của BMI là {!is_empty(height) và !is_empty(weight)}, nghĩa là BMI sẽ chỉ được tính nếu đối tượng nhập giá trị cho cả chiều cao và cân nặng (do đó tránh được nguy cơ mắc lỗi 0 ). Ngoài ra, câu hỏi "Báo cáo" chỉ được hiển thị nếu người trả lời trả lời cả bốn câu hỏi chính (chiều cao, đơn vị chiều cao, cân nặng, đơn vị cân nặng).



Lưu ý: Hình ảnh trên được lấy từ tệp logic khảo sát cho phép bạn tìm kiếm lỗi cú pháp trước khi kích hoạt khảo sát.


Mức độ liên quan được hiển thị và có thể chỉnh sửa khi:

  • bạn muốn xem/chỉnh sửa mức độ liên quan ở cấp độ câu hỏi
  • bạn muốn xem/chỉnh sửa mức độ liên quan ở cấp độ nhóm


Xem/Chỉnh sửa Mức độ liên quan ở cấp độ câu hỏi

Phương trình này tính toán Chỉ số khối cơ thể (BMI). Người ta chỉ hỏi người đó có nhập chiều cao và cân nặng của họ hay không.



Đây là màn hình chỉnh sửa câu hỏi "BMI".



Lưu ý rằng bạn không sử dụng dấu ngoặc nhọn khi nhập phương trình liên quan.


Xem / Chỉnh sửa Mức độ liên quan ở cấp độ nhóm

Bây giờ chúng ta hãy tập trung vào một ví dụ khác - một cuộc điều tra dân số đơn giản. Để tải xuống, hãy nhấp vào liên kết sau: Ví dụ khảo sát điều tra dân số.

Trang đầu tiên hỏi có bao nhiêu người sống cùng bạn và lưu số liệu đó vào biến "cohabs". Trang này chỉ được hiển thị nếu bạn có nhiều hơn một người sống chung (nó được hiển thị cho người thứ hai sống chung với bạn). Ngoài ra, p2name, p2age. p2sum chỉ được hiển thị nếu câu hỏi trước mỗi câu hỏi có chứa câu trả lời.



Vì vậy, nhóm cũng có các tiêu chí liên quan ở cấp độ câu hỏi, chẳng hạn như một số câu hỏi chỉ xuất hiện nếu bạn trả lời một số câu hỏi nhất định trước chúng (ví dụ: p2age được hiển thị nếu p2name được trả lời). ES kết hợp mức độ phù hợp của Nhóm và Cấp độ câu hỏi cho bạn. Các câu hỏi trong nhóm chỉ được hỏi nếu cả nhóm có liên quan. Sau đó, chỉ một số câu hỏi trong nhóm có liên quan mới được hỏi.”

Đây là ảnh chụp màn hình để chỉnh sửa mức độ liên quan ở cấp độ nhóm của Cohabitant 2 :



Lưu ý rằng bạn không sử dụng dấu ngoặc nhọn khi nhập phương trình liên quan.

May/Đường ống

ES cho phép bạn dễ dàng thực hiện các điều chỉnh có điều kiện đơn giản và phức tạp. Đôi khi bạn chỉ cần một sự thay thế đơn giản, chẳng hạn như nói, "Bạn nói rằng bạn đã mua [ Sản phẩm]. Bạn thích điều gì nhất ở nó?". Đôi khi bạn cần sự thay thế có điều kiện như " [ Ông bà.] [ LastName], bạn có sẵn lòng hoàn thành bản khảo sát của chúng tôi không?". Trong trường hợp này, bạn muốn sử dụng "Mr. hoặc Mrs." dựa trên giới tính của người đó. Những lúc khác, bạn thậm chí cần sự thay thế phức tạp hơn (chẳng hạn như dựa trên một phép tính toán học). ES hỗ trợ từng kiểu cắt may/đường ống này.


Phương trình có điều kiện

Ví dụ về Chỉ số khối cơ thể cho thấy khả năng tính toán chỉ số BMI của một người, ngay cả khi cho phép họ nhập chiều cao và cân nặng theo hai đơn vị khác nhau (cm so với inch và kg so với lbs):



Trong trường hợp này, trọng lượngkg là {if(weightunits == "kg", trọng lượng, trọng lượng * 0,453592)}. Hàm "if()" này có nghĩa là nếu đối tượng nhập trọng lượng bằng kilôgam thì hãy sử dụng giá trị đó, nếu không thì nhân giá trị đã nhập (thay thế là pound) với 0,453592 để chuyển đổi thành kilôgam. Biến chiều cao sử dụng cách tiếp cận tương tự để tính chiều cao của một người tính bằng mét (chiều cao tính bằng cm/100), ngay cả khi người đó đã nhập chiều cao tính bằng inch (1 mét=3,28084 inch).

BMI được tính là: {weightkg / (heightm * Heightm)}.

Cuối cùng, báo cáo điều chỉnh thông điệp có điều kiện cho phù hợp với chủ đề, cho cô ấy biết những gì anh ấy đã nhập. (ví dụ: "Bạn nói bạn cao 2 mét và nặng 70 kg.")

Trong hình ảnh bên dưới, trạng thái cân nặng sử dụng các câu lệnh "if()" lồng nhau để phân loại một người từ thiếu cân đến béo phì nghiêm trọng. Bạn có thể xem phương trình của nó bằng cách kiểm tra logic của nó:



Từ cửa sổ chỉnh sửa cho câu hỏi này, bạn có thể thấy hai điều:

  1. Tailoring phải bao quanh các biểu thức bằng dấu ngoặc nhọn
  2. Biểu thức có thể trải dài trên nhiều dòng nếu, như trong trường hợp này, bạn muốn làm cho nó dễ đọc hơn logic điều kiện lồng nhau.



Câu hỏi, câu trả lời và báo cáo phù hợp

Lưu ý: Điều chỉnh động có thể không hoạt động nếu các tùy chọn trả lời có sẵn trong các hộp chọn trên cùng một trang câu hỏi. Điều này xuất phát từ thực tế là việc may đo chèn một thẻ không hợp lệ bên trong các tùy chọn được chọn.

Báo cáo BMI trông như thế này:



Đây là cửa sổ chỉnh sửa cho cùng một câu hỏi.



Bất cứ điều gì trong dấu ngoặc nhọn đều được coi là một biểu thức, được đánh dấu theo cú pháp (mã màu) trong hình ảnh trước đó. Nếu bạn mắc bất kỳ lỗi chính tả nào (chẳng hạn như tên hoặc hàm sai chính tả hoặc không xác định), ES sẽ hiển thị lỗi. Trong ví dụ dưới đây của chúng tôi:

  • Heightunit.shown là một tên biến không xác định (thực ra nó là Heightunits.shown) và
  • "rnd()" là một hàm không xác định (tên hàm thích hợp là "round()" ).

Trong cả hai trường hợp, lỗi đều nằm trong hộp màu đỏ để giúp bạn dễ dàng phát hiện và sửa chúng hơn.



Bạn cũng có thể thấy rằng bạn có thể nhanh chóng tạo các báo cáo phức tạp, chẳng hạn như bảng giá trị đã nhập hoặc lời khuyên phù hợp.

Hãy nhớ rằng tất cả các thao tác chỉnh sửa phải bao quanh các biểu thức bằng dấu ngoặc nhọn để LimeSurvey biết phần nào của câu hỏi là văn bản tự do và phần nào cần được phân tích cú pháp bằng công cụ ExpressionScript.


Xác thực

ES kiểm soát cách hoạt động của hầu hết các tùy chọn câu hỏi nâng cao. Các khía cạnh kiểm soát này như số lượng câu trả lời tối thiểu/tối đa, giá trị riêng lẻ tối thiểu/tối đa, giá trị tổng tối thiểu/tối đa và kiểm tra xem các giá trị đã nhập có khớp với các mẫu chuỗi được chỉ định hay không. Bất kỳ giá trị nào trong một trong các trường đó đều được coi là một biểu thức, vì vậy bạn có thể có tiêu chí tối thiểu/tối đa với các mối quan hệ điều kiện phức tạp với các câu hỏi khác.

Trong tất cả các trường hợp này, vì thuộc tính câu hỏi nâng cao luôn được coi là một biểu thức nên bạn không sử dụng dấu ngoặc nhọn khi chỉ định nó.

Trang khảo sát mẫu hiển thị nhiều ví dụ hoạt động chứa nhiều biểu thức xác thực khác nhau.

ExpressionScript - bản trình bày

Để tìm hiểu thêm về ExpressionScript và cách bạn có thể sử dụng các biểu thức khác nhau để nâng cao khảo sát của mình, vui lòng nhấp vào liên kết sau đây.