Questionnaire answer scales using *answers
🔗
This keyword also works great with questionnaires. Particularly if you're a researcher, you may have a lengthy questionnaire where the same answer options are repeated over and over (e.g. "So true of me", "So not true of me"). Likewise, the number of points assigned to each answer option may be consistent across questions.
You could copy and paste your scale beneath each question, but that could get tedious. Instead, you can also use *answers
with a scale. Here's an example of how it works:
>> answerScale = [["YES!!!", 4], ["ya sure", 3], ["ehh", 2], ["nope", 1], ["eff no", 0]]
>> reverseScale = [["YES!!!", 0], ["ya sure", 1], ["ehh", 2], ["nope", 3], ["eff no", 4]]
*question: Would you go skydiving buck naked plus parachute gear?
*answers: answerScale
*question: Is boarding down a volcano your kind of thing?
*answers: answerScale
*question: Would you rather stare silently at a wall for hours than rappel down a waterfall?
*answers: reverseScale
In the above "Adventurousness Scale," several questions use the same "YES!!!" to "eff no" answer options. But here's how you simplify adding the scale to *answers
:
- First, you define a variable (e.g.
answerScale
) that contains a collection with several smaller collections. Each smaller collection looks like this:["text of answer option", point value associated with that answer]
(e.g.["YES!!!", 4]
). - Second, if you have any other scales for other questions, you may wish to create more variables, such as one that includes a reverse scoring of the typical answer options, if needed (like the
reverseScale
in this example). - Third, you add
*answers: yourScaleVariable
beneath each question that relies on that scale.
The points assigned to each answer won't be visible on the user's screen, but they will be in the CSV of the data. In the CSV, you'll see a column with each full question, and beneath the column will be the point values of all the responses you've collected (rather than the typical text version of the responses). This will make analyzing your data much easier!
Note: the text version of the user's answer response will not be saved ANYWHERE! The CSV only stores the numeric value of the response, as does the *save
keyword. Of course, if you really needed to, later on you could look up the point value in the CSV and check the GuidedTrack code to see what answer it corresponds to.
If you wish to add up a total score, or do other mathematical tricks, you can add a *save
keyword with a unique variable to each question. As mentioned, these variables will save the numeric value of the selected response, rather than the response text. At the end of the program, you can add code like:
>> totalScore = variable1 + variable2
-- + variable3 + variable4 + ...
to get a variable of the total score.
*question: Would you go skydiving buck naked plus parachute gear?
*answers: answerScale
*save: Q1
You scored {Q1} points on that last question.
Using *placeholder
to give a hint🔗
The *placeholder
attribute is used to display a word or short phrase inside an input box that provides a hint as to the expected type of data that the user is expected to type in. You can use it in all question types that involve typing (e.g., text and paragraph).
*question: Give your intro:
*type: paragraph
*placeholder: Write here something about yourself...
Placeholders are commonly used to give an example of what the user should type:
*question: Please, enter your phone number in international format:
*placeholder: +1-9999999999
Note that as soon as the user starts typing in the text box, the *placeholder
text will disappear, so make sure that any complex instructions that are hard to memorize are displayed elsewhere (for example, using *tip
below).
Giving a Tip🔗
Sometimes you might want your question to include an example, or a helpful tip. Doing so is easy with the *tip
keyword.
*question: What was your most recent strange dream like?
*tip: For instance, you might say "I dreamt I turned into a toaster."
The user will see the question asked in normal text. Below it, they will see a lighter-colored text that begins with the words "For instance." Then, they will see the answer box in which to write.
Placing Multiple Questions on One *page🔗
Putting multiple questions on one page looks something like this:
You can put heaps of questions all on one page, and the regular things that can go on a page, such as text, headers, images, videos, etc., can be added before, between, or after questions.
This keyword is great for creating user "preference" pages or pairing related quiz questions.
Simply add the *page
keyword, and indent whatever you want included on that page below.
*page
*header: Bonobo Trivia
*question: What percent of our DNA is shared with bonobos?
*question: How do bonobos solve conflicts?
Making love
Making war
GuidedTrack will automatically insert a page break just before your *page
keyword and on the bottom of it if there isn't one there already (in the form of a "Next" button"). You can also add your own buttons before *page
or as the last thing indented beneath page.
There are certain restrictions with *page
. This keyword can only represent one actual screen in GuidedTrack, so adding multiple screens, such as by indenting reponses after multiple choice options, is not allowed.
Providing Default Answers to Questions🔗
Giving users a little boost in answering a question, or allowing them to revise a previous answer, is possible with *default
.
You use *default
when you want to pre-populate a question text box with an answer. Or, when you want a multiple choice, checkbox, or slider question to be pre-selected.
Text and paragraph questions🔗
When a text box is clicked by your users, your default text won't disappear (it's not hint text), but rather your users can submit the answer as-is immediately by clicking submit or edit the text before submitting.
Here's how the code might look (make sure to add the quotes, unless the default will be a variable):
*question: Finish the start of this story.
*default: "It was a bright cold day in April..."
*save: story
Here's how the above code would look to the user:
Checkbox questions🔗
To use default with a checkbox question, just add all the options you want selected to a collection in *default
.
*question: Which of my super awesome hourly newsletters do you want to sign up for?
*default: ["Catasaurus Rex", "Catopian Dreams", "Kitty Kaleidoscope", "Meow Meow Times"]
*type: checkbox
Catasaurus Rex
Catopian Dreams
Kitty Kaleidoscope
Meow Meow Times
Here's how the above code would look:
Multiple choice questions🔗
To give a default answer to a multiple choice question, just write the exact text to the one answer you want preselected.
For example:
*question: Ready for a pop quiz?
*default: "Yes!"
Yes!
No, not really.
Here's how this would look:
Variable values🔗
You can also use variables with *default
, like so (no quotes required):
*question: Make revisions to your story below
*default: story
Save a User's Answer🔗
It's often nice to remember a specific answer a user has given, such as their name, so that you can use it within your program.
*question: What's your name?
*save: userName
Welcome, {userName}!
In the example above, we used the *save
keyword to save the user's answer to a variable called "userName". If the user had typed "Ducky," they would next see, "Welcome, Ducky!" To save the user's answer, you have to type in a unique name or code for the answer you want to save. Check out the variables section of this manual to learn more about them.
Shuffle Answer Options🔗
Did you know that people select the first option in a multiple choice question more often than any other brilliant answer you could have given them? Is it out of laziness? Subconscious beliefs that the first option is best? Reckless captivation of the heart? We don't know.
What we do know is that you can remedy this problem by randomizing your answer options so that your results aren't skewed by position bias.
It's rather easy:
*question: Would you rather...
*shuffle
Uncontrollably sneeze after every sentence you spoke
Uncontrollably fart every time that you laughed
In the above example, users will either see the sneeze option first or the latter possibility.
Just indent a *shuffle
beneath any multiple choice, checkbox, or slider question (numeric values excepted) that you'd like to randomize.
Note though that *shuffle
is probably not useful for answer options that lie on a continuum (e.g. cold, cool, warm, hot). Shuffle these only if you want to annoy your users.
Summarizing Entered Data🔗
When users answer a question, you can save the question and their answer in order to display both back to them later on. This is great for reminding the user of what they answered to a question previously, or summarizing their previous answers for them. To do this, you use the *tags
keyword and the *summary
keyword.
*question: Do you like Tiny Tim, considering all he's done for you?
*tags: TinyTimQuestion
Here is the question you answered about Tiny Tim, and your answer to that question:
*summary: TinyTimQuestion
In this example, we've indented a *tags
keyword underneath the question we wanted to recall later. The keyword *tags
marks the question as well as the user's response with tags, and "TinyTimQuestion" is what we decided to use as our tag in this case. Below the text "Here is the question you answered..." the *summary
keyword was placed, with the name of the tag we want to recall here. After answering the Tiny Tim question, the user will see "Here is the question you answered...", then they will see the text of the Tiny Tim question repeated back to them followed by the answer they provided.
Multiple tags can also be used on the same question and should be separated by commas. Multiple questions can also have the same tag. This allows the user to answer several questions, and then receive a summary of their answers.
*question: What's your favorite number?
*question: What's your favorite color?
*tags: personal
Red
Blue
Greenwich
*question: What city do you live in?
*tags: demographics
*question: Do you work with robots?
*tags: personal, demographics
Here are the personal questions you answered:
*summary: personal
And here are the demographic ones:
*summary: demographics
And here are ALL the questions you answered:
*summary
At the end of this example, the questions and answers tagged as "personal" will be summarized first, followed by the questions and answers tagged as "demographics." Some questions and answers will be summarized in both the personal and demographics summaries because they have both tags. At the end, any question-answer-pair given a *tags
keyword (whether they are configured as "personal" or "demographic") will be summarized. The question "What's your favorite color?" will not be summarized though, because it was not given a *tags
keyword.
Throw Away the Data You Don't Need🔗
Each question answered is stored as a column in the CSV automatically. If you don't want certain questions and their answers stored, you can use *throwaway
. This might be handy if:
- You're asking users for personally identifiable information (e.g. their name or email) and do not want this information saved in the CSV for privacy reasons.
- You'd simply like to keep your CSV tidier, and don't want to store data from questions that are not relevant to you.
- You want to reduce the file size of your CSV, which could become quite massive if users answer the similar but slightly varied questions repeatedly (and you don't need to save those responses).
You can also use *save
in conjunction with *throwaway
to store just one column of answers as opposed to two. (Otherwise, with *save
there is one column of answers with the variable name as a header, e.g. userName
, and one column of duplicate answers with the question text as a header, e.g. "What's your name?").
With *save
and *throwaway
both indented under a *question
, the variable name will still be its own header in a column with its answers (i.e., it will not be thrown away!). However, the question itself will not be directly stored in the CSV (i.e., there will not be a duplicate column of answers headed by the question text).
For example, in the program below you want to know how many fruits a person likes out of a list but you don't need to know which ones in particular they like:
>> numberOfFruitsUserLikes = 0
*question: Do you like pears?
*throwaway
Yes
>> numberOfFruitsUserLikes = numberOfFruitsUserLikes + 1
No
*question:Do you like apples?
*throwaway
Yes
>> numberOfFruitsUserLikes = numberOfFruitsUserLikes + 1
No
*question:Do you like bananas?
*throwaway
Yes
>> numberOfFruitsUserLikes = numberOfFruitsUserLikes + 1
No
You like {numberOfFruitsUserLikes} out of 3 types of fruit.
Or let's say you ask the user for their email address but you're just going to use it from within the program and do not want it stored in the CSV file:
*question: What is your email?
*save: email
*throwaway
*email
*subject: I'm writing to you
*to: email
*body
But I will not keep your address after the email is sent
>> email = ""
Note that *throwaway
can only be used to keep a question — with its answers — from being written in the file, but you need to store temporarily the answer in a variable so that you can use it. Since you cannot *throwaway
variables, you will need to overwrite it like in the example so that the column with the header "email" has blanks for every run.
Next: Additional keywords