ExpressionScript Engine - Panduan memulai cepat
From LimeSurvey Manual
Panduan memulai cepat
Di dalam LimeSurvey, Anda dapat menyesuaikan survei Anda lebih lanjut dengan menggunakan ExpressionScript (singkatnya: ES). Catatan tambahan: "ExpressionScript dahulu bernama Expression Manager (EM) pada versi sebelumnya. Jika Anda menemukan istilah Expression Manager di suatu tempat, itu hanyalah nama lama dari ES."
ES dapat digunakan untuk menentukan hal-hal berikut:
- Navigasi/Percabangan - memungkinkan jawaban responden mengubah urutan tampilan pertanyaan;
- Penyesuaian/Piping - membantu Anda menyusun kalimat pertanyaan (misalnya merujuk pada jawaban sebelumnya, atau mengubah bentuk kalimat berdasarkan usia atau jenis kelamin subjek Anda) atau cara membuat laporan khusus (seperti skor penilaian atau saran yang disesuaikan);
- Validasi - memastikan bahwa jawaban memenuhi kriteria tertentu, seperti nilai minimum dan maksimum atau pola masukan tertentu.
ES menyediakan cara yang intuitif untuk menentukan logika bagi setiap fitur tersebut. Hampir semua yang dapat Anda tulis sebagai persamaan matematika standar merupakan ekspresi yang valid.
ES saat ini menyediakan akses ke 70 fungsi dan dapat dengan mudah diperluas untuk mendukung lebih banyak fungsi. ES juga memungkinkan Anda mengakses variabel menggunakan nama variabel yang mudah dibaca manusia (bukan nama SGQA).
Bagian-bagian berikut menunjukkan tempat-tempat utama di mana ES digunakan.
Beberapa survei menggunakan "Goto Logic", sehingga jika Anda menjawab Question1 dengan opsi C, Anda diarahkan ke Question5. Pendekatan ini sangat terbatas karena sulit divalidasi. Selain itu, pendekatan ini mudah rusak ketika Anda harus mengurutkan ulang pertanyaan. Sebaliknya, ES menggunakan persamaan relevansi Boolean untuk menentukan semua kondisi di mana suatu pertanyaan dianggap valid. Jika pertanyaan relevan, maka pertanyaan tersebut ditampilkan; jika tidak, pertanyaan tersebut tidak berlaku, dan nilai "NULL" disimpan di basis data.
Untuk lebih memahami konsep relevansi, mari kita bahas survei berikut yang menghitung Indeks Massa Tubuh (BMI) responden survei. Untuk mengunduhnya, klik tautan berikut: Contoh survei Indeks Massa Tubuh.
Persamaan relevansi ditampilkan di bawah pada kolom Relevansi setelah nama variabel. Nilai relevansi weight, weight_units, height, dan height_units semuanya adalah 1 (nilai default), yang berarti pertanyaan-pertanyaan tersebut selalu ditampilkan. Namun, relevansi untuk BMI adalah {!is_empty(height) and !is_empty(weight)}, yang berarti BMI hanya akan dihitung jika subjek memasukkan nilai untuk tinggi dan berat badan (sehingga menghindari risiko kesalahan pembagian dengan nol). Selain itu, pertanyaan "Report" hanya ditampilkan jika responden menjawab keempat pertanyaan utama (height, heightunits, weight, weightunits).

Relevansi ditampilkan dan dapat diedit ketika:
- Anda ingin melihat/mengedit relevansi tingkat pertanyaan
- Anda ingin melihat/mengedit relevansi tingkat grup
Melihat / Mengedit Relevansi Tingkat Pertanyaan
Persamaan ini menghitung Indeks Massa Tubuh (BMI). Pertanyaan ini hanya ditanyakan jika orang tersebut memasukkan tinggi dan berat badannya.

Ini adalah layar edit untuk pertanyaan "BMI".

Perhatikan bahwa Anda tidak menggunakan kurung kurawal saat memasukkan persamaan relevansi.
Melihat / Mengedit Relevansi Tingkat Grup
Sekarang mari kita bahas contoh lain - survei sensus sederhana. Untuk mengunduhnya, klik tautan berikut: Contoh survei sensus.
Halaman pertama menanyakan berapa banyak orang yang tinggal bersama Anda dan menyimpannya dalam variabel "cohabs". Halaman ini hanya ditampilkan jika Anda memiliki lebih dari satu penghuni serumah (ditampilkan untuk orang kedua yang tinggal bersama Anda). Selain itu, p2name, p2age, p2sum hanya ditampilkan jika pertanyaan sebelum masing-masing darinya berisi tanggapan.

Jadi, grup tersebut juga memiliki kriteria relevansi tingkat pertanyaan, sehingga beberapa pertanyaan hanya muncul jika Anda menjawab pertanyaan tertentu sebelumnya (misalnya, p2age ditampilkan jika p2name dijawab). ES menggabungkan relevansi tingkat Grup dan tingkat Pertanyaan untuk Anda. Pertanyaan dalam sebuah grup hanya ditanyakan jika grup secara keseluruhan relevan. Kemudian, hanya sebagian pertanyaan di dalam grup yang relevan yang ditanyakan.
Berikut adalah tangkapan layar untuk mengedit relevansi tingkat grup dari Cohabitant 2:

Perhatikan bahwa Anda tidak menggunakan kurung kurawal saat memasukkan persamaan relevansi.
Penyesuaian/Piping
ES memungkinkan Anda melakukan penyesuaian bersyarat, baik sederhana maupun kompleks, dengan mudah. Terkadang Anda hanya memerlukan substitusi sederhana, misalnya, "Anda mengatakan bahwa Anda membeli [Produk]. Apa yang paling Anda sukai dari produk tersebut?". Terkadang Anda memerlukan substitusi bersyarat seperti "[Bapak/Ibu] [NamaBelakang], apakah Anda bersedia mengisi survei kami?". Dalam hal ini, Anda ingin menggunakan "Bapak atau Ibu" berdasarkan jenis kelamin orang tersebut. Pada kesempatan lain, Anda memerlukan substitusi yang lebih kompleks (misalnya berdasarkan perhitungan matematis). ES mendukung semua jenis penyesuaian/piping ini.
Persamaan Bersyarat
Contoh Indeks Massa Tubuh (BMI) menunjukkan kemampuan untuk menghitung BMI seseorang, sekaligus memungkinkan mereka memasukkan tinggi dan berat badan dalam dua satuan yang berbeda (cm vs inci dan kg vs lbs):

Dalam kasus ini, weightkg adalah {if(weightunits == "kg", weight, weight * 0.453592)}. Fungsi "if()" ini berarti bahwa jika responden memasukkan berat badan dalam kilogram, gunakan nilai tersebut; jika tidak, kalikan nilai yang dimasukkan (alternatifnya adalah pon) dengan 0.453592 untuk mengonversinya ke kilogram. Variabel heightm menggunakan pendekatan serupa untuk menghitung tinggi badan dalam meter (tinggi dalam cm/100), meskipun ia memasukkan tinggi badannya dalam inci (1 meter=3.28084 inci).
BMI dihitung sebagai: {weightkg / (heightm * heightm)}.
Terakhir, laporan menyesuaikan pesan secara bersyarat untuk responden, dengan menyebutkan apa yang telah dimasukkannya. (misalnya, "Anda mengatakan bahwa tinggi Anda 2 meter dan berat Anda 70 kg.")
Pada gambar di bawah ini, weightstatus menggunakan pernyataan "if()" bersarang untuk mengategorikan seseorang dari berat badan kurang hingga obesitas berat. Anda dapat melihat persamaannya dengan memeriksa logikanya:

Dari jendela edit untuk pertanyaan ini, Anda dapat melihat dua hal:
- Penyesuaian harus mengapit ekspresi dengan kurung kurawal
- Ekspresi dapat terdiri dari beberapa baris jika, seperti pada kasus ini, Anda ingin mempermudah pembacaan logika bersyarat yang bersarang.

Pertanyaan, Jawaban, dan Laporan yang Disesuaikan
Laporan BMI terlihat seperti ini:

Berikut adalah jendela edit untuk pertanyaan yang sama.

Apa pun di dalam kurung kurawal diperlakukan sebagai ekspresi, dengan penyorotan sintaks (kode warna) pada gambar sebelumnya. Jika terdapat kesalahan pengetikan (seperti nama variabel atau fungsi yang salah eja atau tidak terdefinisi), ES akan menampilkan kesalahan. Pada contoh di bawah ini:
- heightunit.shown adalah nama variabel yang tidak didefinisikan (yang benar adalah heightunits.shown) dan
- "rnd()" adalah fungsi yang tidak terdefinisikan (nama fungsi yang benar adalah "round()").
Pada kedua kasus, kesalahan ditempatkan di dalam kotak merah agar lebih mudah ditemukan dan diperbaiki.

Anda juga dapat melihat bahwa Anda dapat dengan cepat membuat laporan yang kompleks, seperti tabel nilai yang dimasukkan atau saran yang disesuaikan.
Harap diingat bahwa semua penyesuaian harus mengapit ekspresi dengan kurung kurawal agar LimeSurvey mengetahui bagian mana dari pertanyaan yang merupakan teks bebas dan bagian mana yang harus diurai oleh mesin ExpressionScript.
Validasi
ES mengontrol cara kerja sebagian besar opsi pertanyaan lanjutan. Opsi ini mengatur aspek seperti jumlah jawaban minimum/maksimum, nilai individual minimum/maksimum, nilai total minimum/maksimum, dan pemeriksaan apakah nilai yang dimasukkan sesuai dengan pola string yang ditentukan. Nilai apa pun pada kolom-kolom tersebut dianggap sebagai ekspresi, sehingga Anda dapat membuat kriteria minimum/maksimum dengan hubungan bersyarat yang kompleks terhadap pertanyaan lain.
Pada semua kasus ini, karena atribut pertanyaan lanjutan selalu dianggap sebagai ekspresi, Anda tidak menggunakan kurung kurawal saat menentukannya.
Halaman survei contoh menampilkan banyak contoh yang berfungsi dengan berbagai ekspresi validasi.
ExpressionScript - presentasi
Untuk mengetahui lebih lanjut tentang ExpressionScript dan cara menggunakan berbagai ekspresi untuk meningkatkan survei Anda, silakan klik tautan berikut.