Department of Engineering

IT Services

Qualtrics Survey Processing

Introduction

Here are the stages of survey processing -

  • The QSF files that define the surveys and the CSV files that contain the replies are downloaded.
  • Reports are produced in PDF. They can be for individuals or groups.
  • The reports are mailed to individual lecturers and chairs.
  • The reports are installed on the TO web server.

Prerequisites

  • ~tl136/QUALTRICS on CUED's central linux system contains the programs and templates. A zip file is available containing all you need. There's also a git repository at https://gitlab.developers.cam.ac.uk/tl136/student-surveys. The files can be downloaded onto other linux/MacOS machines. You will need to set an environment variable QUALTRICSFOLDER to be the name of the folder where you've downloaded the files - e.g. type
          export QUALTRICSFOLDER=~tl136/QUALTRICS
        
  • To use them you'll need Python 3 (already installed at CUED).
  • To download survey replies you'll need the Qualtrics API token. To get the token, log into the Qualtrics site, go to Account Settings in the user dropdown, then go to Qualtrics IDs section and look for the API Token.
  • To create the reports you'll need latex (already installed at CUED) and the pgfplots package (not installed).
  • In $QUALTRICSFOLDER is a file called defaults containing something like

    Term=All
    AcademicYear=2020-21
    Test=yes
    
    This is used by some programs to determine the value of some common properties - the "AcademicYear" value is a string that's used in surveys and reports. These values can be overridden on a per-command basis.

Downloading replies

The programs that produce reports also download the files from the Qualtrics server (*.json and *.csv files) unless the files exist locally already.

Producing Reports

Reports can be produced for each module, or a big report can be produced for each year. The programs are in $QUALTRICSFOLDER/programs. Options available include -

  • downloadprocessI.py IA SINGLE
  • downloadprocessI.py IA MULTIPLE
  • downloadprocessI.py IB SINGLE
  • downloadprocessI.py IB MULTIPLE
  • downloadprocessII.py IIA
  • downloadprocessII.py IIABIGFILE
  • downloadprocessII.py IIB
  • downloadprocessII.py IIBBIGFILE

Mailing Reports

With a folder for each year's PDF reports, the following programs will mail the reports to the appropriate lecturers. You need to be in the appropriate folder before running the commands -

  • IA - mailIAdocs.py
  • IB - mailIBdocs.py
  • IIA - mailIIdocs.py
  • IIB - mailIIdocs.py

By default, these will tell you who will be mailed what, but won't mail. Adding " mail=yes" to the line will acually mail.

Putting Reports online

An archive exists which certain people (currently tl136 and TOstaff) can access. The per-course PDF files are there, filed by term, calendar year and student-year. For example, http://to.eng.cam.ac.uk/teaching/apps/qualtricssurvey/2019/IIB/PDF/4A12:_Turbulence_Lecturer_2_+em257.pdf exists.

The top-level folder needs an appropriate .htaccess file, and all folders benefit from a breadcrumb.html file (an empty one will do). The index.html file's table is handcrafted, using the previous year's file as a first draft.

Running

   makeWWWpages.py
  

(the program's in the $QUALTRICSFOLDER/programs folder) will download the survey replies, create PDF files, and create files for the web site (with index.html files the top folder abs in IA, IB, IIA, IIB subfolders). It will take at least 30 minutes.

The webadmin password for www3 is needed too, in order to install these reports.

Who does what and when

Processing is done after the end of each term. The Teaching Office could operate the whole process. Some programs may need to become friendlier (albeit less flexible) before the Teaching Office would feel comfortable using them directly. Running makeWWWpages.py does most of the work, creating all the reports. Then going to each folder of PDF files and running the appropriate mail*docs.py program will send out the reports. So if you don't want to do any checking, just

makeWWWpages.py
cd IA/PDF
mailIAdocs.py mail=yes
cd -
cd IB/PDF
mailIBdocs.py mail=yes
cd -
cd IIA/PDF
mailIIdocs.py mail=yes
cd -
cd IIB/PDF
mailIIdocs.py mail=yes
cd -

might be enough. Then the reports can be added to the WWW site.

See Also

More technical details are in processingPartIsurveys.pdf and processingPartIIsurveys.pdf