Przy bardziej zaawansowanych zastosowaniach przychodzi często moment, w którym zauważamy, że standardowe funkcje programu zaczynają być dla nas niewystarczające. Wtedy warto wspomóc się wykorzystaniem języka skryptowego. Dzięki temu, takie zadania jak automatyzacja powtarzalnych raportów, łączenie wielu zbiorów czy też efektywna weryfikacja jakości danych stają się znacznie łatwiejsze.
Naturalnym rozwiązaniem wydaje się droga w kierunku nauki języków programowania. Pytanie tylko, czy badacz społeczny powinien angażować czas i energię w naukę tak rozbudowanego zagadnienia? A jeśli tak - to jaki poziom może uznać za wystarczający? Zawsze warto wiedzieć więcej, ale osiągnięcie pułapu mistrzowskiego w programowaniu to już zupełnie inna sprawa.
Osobiście jestem zwolennikiem pewnego kompromisu pomiędzy rozumieniem zagadnień informatycznych, a biegłością w posługiwaniu się nimi. Przykładem takiej symbiozy jest Biblioteka Pytań Niestandardowych (element rozwojowy systemu PS QUAESTIO PRO). Zawartość tworzona jest przez developerów (programistów), ale wkład merytoryczny pochodzi od badaczy.
W kolejnych wersjach PS QUAESTIO PRO pojawia się coraz ciekawsza i zarazem liczniejsza grupa predefiniowanych skryptów, które znacząco rozszerzają techniczne, jak i (co najbardziej cieszy) merytoryczne możliwości budowania ankiet. Najważniejsze jest jednak to, że wszelkie wprowadzone tam „wodotryski” w żaden negatywny sposób nie wypływają na postać danych wynikowych i nie komplikują ich analizy. W tym artykule chciałbym przyjrzeć się bliżej kilku z nich, które na podstawie swojego doświadczenia uznałem za warte pokazania.
Aby przejść do biblioteki pytań (Library) należy uruchomić program Author (graficzne środowisko projektowania ankiet) i w menu Explorer znajdującym się po prawej stronie ekranu wybrać opcję Library.
W drzewie katalogowym biblioteki mamy do dyspozycji szereg folderów zawierających przykładowe kwestionariusze, szablony wyglądu oraz Wizardy czyli predefiniowane kreatory, pozwalające na umieszczanie w ankiecie niestandardowych pytań lub obiektów.
Najwięcej ciekawych obiektów znajduje się w folderze PS QUAESTIO PRO, ale przykłady, które zamieściłem poniżej pochodzą również z innych lokalizacji, np. Functionality czy Questions.
Slider grid
Zacznę od obiektu, który powstał na bazie klasycznego pytania tabelarycznego (single response grid). W dobie dominacji urządzeń mobilnych, tego typu obiekty zaczęły popadać w niełaskę ze względu na duży stopień złożoności treści, która źle wygląda na ekranie smartfona. Odpowiedzią jest tzw. Slider Grid, który znajduje się w bibliotece w zakładce PS QUAESTIO PRO. Jego użycie jest niezwykle proste. Wystarczy wskazać obiekt Slider_Grid i użyć przycisku Insert znajdującego się w dolnej części okna.
Umieszczone automatycznie pytanie zawiera przykładową treść i wygląda następująco:
Zasadnicza różnica w stosunku do pytania tabelarycznego polega na tym, że każdy z aspektów, które podlegają ocenie, jest wyświetlany niezależnie. Dodatkowo, zaznaczenie odpowiedzi powoduje automatyczne przejście do kolejnego aspektu, a strzałki po obu stronach pytania pozwalają nawigować pomiędzy ocenami. Dzięki temu nawet bardzo duża tabela pozwala na bardzo intuicyjne udzielenie odpowiedzi. Co ważne, skrypt dynamicznie dostosowuje treść pytań, co umożliwia wprowadzanie kolejnych zmian.
Pytania rangujące
W tym obszarze mamy do dyspozycji bardzo liczną grupę pytań, których głównym zadaniem jest umożliwienie respondentowi porangowania odpowiedzi. Mówiąc prościej: uszeregowania ich w kolejności, od naj… do naj..,. np. od najlepszej do najgorszej, od najtańszej do najdroższej, od najciekawszej do najmniej ciekawej, itd.
Pytanie Rangowanie odpowiedzi (Drag&drop) jest obiektem domyślnie dedykowanym dla urządzeń mobilnych, jednak równie dobrze sprawuje się na ekranie klasycznego PC. Daje możliwość uszeregowania odpowiedzi w dowolnej kolejności za pomocą opcji Drag&Drop (przeciągnij i upuść). Wystarczy przeciągnąć za pomocą palca lub myszy kategorię z listy po lewej na prawą stronę ekranu. Ponadto zawsze można zmienić zdanie i dokonać modyfikacji kolejności uszeregowanych odpowiedzi lub - w skrajnym wypadku - zupełnie pominąć jedną z nich.
Wstawianie pytania Rangowanie odpowiedzi (Drag&drop) odbywa się za pomocą kreatora, który daje możliwość wprowadzenia nazwy pytania, treści oraz kategorii odpowiedzi. Również w tym wypadku możliwe są dowolne zmiany w pytaniu, gdyż zawarty w nim skrypt JS dostosowuje je dynamicznie do nowej treści.
Kolejne rozszerzenie z grupy pytań rangujących to Click To Rank Question, które bazuje na klasycznym obiekcie typu numeric grid. Różnica polega na sposobie udzielania odpowiedzi. Zamiast ręcznego wprowadzania wartości liczbowych, które mają rangować poszczególne kategorie, respondent szereguje je za pomocą myszy. Kolejność zaznaczania staje się jednocześnie mechanizmem rangowania. Dodatkowo, poniżej listy kategorii znajduje się klawisz Reset, którego wciśnięcie, usuwa przypisanie rang.
Zastosowanie pytań tego typu przydaje się najczęściej przy ocenie ważności wymienionych cech produktu, który oferujemy lub np. przy ocenie wystąpień podczas konferencji.
Pytanie typu stałe sumy
Teraz spróbujemy przyjrzeć się bliżej bardziej rozbudowanej wersji niestandardowego obiektu o nazwie Constant Sum Wizard. Jest to pytanie numeryczne mierzone na skali stałych sum. Innymi słowy, możemy poprosić respondenta o procentowy lub kwotowy podział wartości na poszczególne cechy. Przykładowo: chcielibyśmy się dowiedzieć, ile czasu ankietowany spędza w Internecie w domu, a ile w pracy lub szkole itd. Możemy również poprosić o rozdysponowanie kwoty 1000 zł na poszczególne grupy produktowe. Przykłady można by mnożyć, jednak sam obiekt został tak przygotowany, aby wspierać badacza w techniczno-merytorycznym kontekście pytania. Przede wszystkim, mamy łatwą możliwość określenia maksymalnej wartości jaka będzie przewidziana do rozdysponowania. Jej przekroczenie skutkować będzie stosownym komunikatem. Dodatkowo przewidziana została możliwość „przepuszczenia” respondenta do kolejnego pytania, gdy ten kilkukrotnie wprowadzi błędną wartość (np. wartości nie sumują się do 100%). Jest to swego rodzaju zabezpieczanie przed niestandardową sytuacją, której nie przewidzieliśmy w pytaniu, a która wystąpiła u respondenta.
Przykładowe pytanie, które użyję do pokazania Wam sposobu użycia tego obiektu będzie następujące:
Analogicznie jak poprzednio, wybieramy interesujący nas obiekt Constant Sum Wizard i naciskamy klawisz Insert. Tym razem jednak program przeprowadzi nas przez specjalny kreator umożliwiający dostosowanie istotnych parametrów pytania. W pierwszej kolejności wprowadzamy własną nazwę pytania np. p4, a następnie treść pytania i kategorie odpowiedzi:
W kolejnym oknie kreatora mamy do ustalenia dwa istotne parametry. Przede wszystkim musimy określić do jakiej wartości mają sumować się poszczególne kategorie. W naszym przypadku przewiduję podział procentowy, więc pozostawiamy wartość 100. Drugi z parametrów domyślnie ustawiony na 3 oznacza, że trzykrotne przekroczenie lub niedopełnienie wartości sumarycznej 100 pozwoli, mimo wszystko, przejść respondentowi do kolejnego pytania. Wstawienie wartości 0 całkowicie zablokuje tę możliwość.
W ostatnim kroku kreatora, aplikacja informuje nas o konieczności niewielkiej modyfikacji szablonu wyglądu. Chodzi o parametr ShowErrors="TopAndBottomMost" odpowiadający za umiejscowienie dodatkowego komunikatu o ewentualnych błędach popełnionych przy wypełnianiu. Standardowo komunikat ten nie występuje w systemie, a jego treść będzie dynamicznie pobierana z obiektu Display Text , który jest dołączony do omawianego pytania.
Bez względu na to, jaki layout właśnie wykorzystujecie, zawsze znajduje się w nim sekcja mrData odpowiadająca między innymi za publikowanie treści pytań. Wystarczy przejść do odpowiedniego fragmentu i dokonać modyfikacji jak poniżej:
Przed modyfikacją:
< mrData>All questions< /mrData>
Po modyfikacji:
< mrData ShowErrors="TopAndBottomMost" >All questions< /mrData>
Pozostaje nam jeszcze jeden element tj. wykonanie tłumaczenia obiektu Display Text, który, jak wspominałem wcześniej, odpowiada za treść komunikatu o błędzie przekroczenia lub niedopełnienia sumy. Należy go szukać w zakładce Question. Swoją drogą, jest to ciekawy przykład, który obrazuje, jak łatwo możemy tworzyć własne komunikaty i wyświetlać je dynamicznie w zależności od zaistniałej sytuacji. W naszym przypadku nazwa obiektu to p4Error. Proponuję wprowadzić następującą treść: Zweryfikuj wprowadzone wartości. Ich suma powinna wynosić 100 %.
W moim przykładzie efekt końcowy wygląda następująco:
Wyświetlanie w pytaniu dodatkowych informacji
Ostatnim obiektem, który chciałem omówić w dzisiejszym artykule, jest predefiniowany skrypt Substitute from Participant Record Wizard. Nie jest to stricte pytanie, niemniej jest on niezwykle przydatny, gdyż umożliwia umieszczanie w ankiecie dodatkowych informacji o respondencie.
Sam mechanizm wstawiania z Library jest analogiczny jak w przypadku wcześniej omawianych obiektów. Dlatego skupię się na zasadach funkcjonowania, gdyż są dość specyficzne i wymagają przygotowania.
Po pierwsze obiekt ten używamy tylko w przypadku badań autoryzowanych tj. na zdefiniowanej grupie uczestników. Druga sprawa to fakt, że przed wstawieniem obiektu musimy mieć już w ankiecie wszystkie pytania, w których chcemy wyświetlić dodatkowe informacje. Jest to konieczne ponieważ kreator poprosi nas o wprowadzenie nazw pytań oraz zmiennych, w których zawarte są informacje dodatkowe. Bez obawy, jeżeli trzeba będzie dokonać modyfikacji treści ankiety już po umieszczeniu skryptu Substitute from Participant Record Wizard, wystarczy go usunąć i wstawić ponownie z Library.
Pamiętajcie, że skrypt zacznie działać dopiero po aktywacji ankiety na serwerze PS QUAESTIO PRO.
Nasz przykład uprościmy do minimum. Poprosimy respondenta o potwierdzenie, czy wyświetlony w treści pytania numer kontaktowy jest prawidłowy. Na początek proponuję utworzenie pytania jak poniżej:
Następnie aktywujemy projekt na serwerze z włączoną opcją badań autoryzowanych. Ważne, aby na liście zmiennych znalazła się informacja o numerze telefonu np. tel1.
Teraz możemy już przystąpić do wstawienia skryptu. W pierwszej kolejności kreator poprosi nas o podanie nazwy zmiennej z bazy participants oraz listy pytań, w których będziemy chcieli umieścić numer telefonu (czyli zawartość zmiennej tel1).
Na zakończenie możemy wybrać, czy chcemy wstawić wartość kolejnej zmiennej z bazy participants, czy też zakończyć działanie kreatora. Ponieważ nie planowaliśmy umieszczać żadnych dodatkowych informacji to wybieramy drugą z opcji i zaznaczamy No, I'm done. W tym momencie pozostaje nam umieścić znacznik {tel1} w treści pytania. Ja dodatkowo powiększyłem czcionkę i zmieniłem jej kolor na brązowy, aby wyświetlony numer był lepiej widoczny na tle pozostałej treści pytania.
Po ponownej aktywacji projektu, każdorazowe uruchomienie autoryzowanej ankiety w miejscu znacznika umieści automatycznie zawartość zmiennej tel1.
W tym miejscu ciśnie się na język pytanie, a co jeżeli nie jest prawidłowy? Tutaj na szczęście przychodzi z pomocą kolejny predefiniowany skrypt, który ma dokładnie odwrotne działanie do powyższego. Dzięki niemu możemy do dowolnej zmiennej z bazy participants zapisać odpowiedź udzieloną przez respondenta. Pomysł na to jak zwrotnie uzyskać prawidłowy numer telefonu, emaila czy jakiejkolwiek inne ważnej informacji pozostawiam do Waszej samodzielnej realizacji.