VR / Simulator Sickness Evaluation

Simulator Sickness Questionnaire (SSQ)

Standard 16-symptom assessment (Kennedy et al., 1993) computing Nausea, Oculomotor, Disorientation, and Total Sickness scores.

Instrument version, scoring, and data handling

Version: 16-item Simulator Sickness Questionnaire with four severity levels.

Scoring: Uses the published Nausea, Oculomotor, Disorientation, and Total Severity weighting procedure.

Data handling: CSV mode creates a file only on this device; the portfolio server does not receive the response. Google Sheets mode sends the participant ID, condition, item responses, calculated scores, tool name, sheet/tab name, and timestamp to the Google Sheet Web App URL entered by the researcher. Nothing is sent until the final save action. Completion is shown only when that script returns JSON with success: true (or ok: true) after appending the row.

Step 1 Select Data Save Option

Data Save Option
💡 How to connect your Google Sheet (10-second setup)
  1. Create or open your target Google Sheet.
  2. Click Share (top right) → under General access, change to Anyone with the link can edit.
  3. Copy the Google Sheet link from your browser address bar and paste it into the input box above!
Advanced: Using a custom Google Apps Script deployment

If you prefer to deploy your own private script instead of sharing your sheet link, copy the script below, deploy it as a Web App (access: Anyone), and paste your /exec URL above:

function doPost(e) {
  var lock = LockService.getScriptLock();
  lock.tryLock(10000);
  try {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var data = JSON.parse(e.postData.contents);
    var rowsToAppend = [];
    var sheetName = "Sheet1";

    if (Array.isArray(data)) {
      rowsToAppend = data;
    } else if (data && Array.isArray(data.rows)) {
      sheetName = data.sheetName || "Sheet1";
      rowsToAppend = data.rows;
    } else if (data) {
      sheetName = data.sheetName || "Sheet1";
      var obj = {};
      for (var k in data) { if (k !== 'sheetName') obj[k] = data[k]; }
      rowsToAppend = [obj];
    }

    if (rowsToAppend.length === 0) return ContentService.createTextOutput(JSON.stringify({ success: false })).setMimeType(ContentService.MimeType.JSON);

    var sheet = ss.getSheetByName(sheetName) || ss.insertSheet(sheetName);
    var keys = Object.keys(rowsToAppend[0]);
    if (sheet.getLastRow() === 0) sheet.appendRow(keys);

    rowsToAppend.forEach(function(r) {
      sheet.appendRow(keys.map(function(k) { return (r[k] !== undefined && r[k] !== null) ? r[k] : ""; }));
    });

    return ContentService.createTextOutput(JSON.stringify({ success: true })).setMimeType(ContentService.MimeType.JSON);
  } catch(err) {
    return ContentService.createTextOutput(JSON.stringify({ success: false, error: err.toString() })).setMimeType(ContentService.MimeType.JSON);
  } finally {
    lock.releaseLock();
  }
}

This URL is remembered only in this browser on this device.

Simulator Sickness Questionnaire (SSQ) References(2 papers)
View References

Primary validation sources for quantifying simulator sickness and motion discomfort:

[1]

Kennedy, R. S., Lane, N. E., Berbaum, K. S., & Lilienthal, M. G. (1993). Simulator Sickness Questionnaire: An enhanced method for quantifying simulator sickness. The International Journal of Aviation Psychology, 3(3), 203-220.

DOI
[2]

Bouchard, S., Robillard, G., & Renaud, P. (2007). Revisiting the factor structure of the Simulator Sickness Questionnaire. CyberPsychology & Behavior, 10(2), 241-253.

DOI