Google Sheets Access

Review and update the questionnaire in the shared sheet.

Use this page if your main access is the shared questionnaire sheet. The sheet is the editable questionnaire source. Valid edits there are what the running survey reads.

What you can do in Google Sheets

  • Review and update wording in the current questionnaire version.
  • Add or adjust translations in the shared table.
  • Update answer options and context choices.
  • Create a new dated version tab when a change should be tracked separately.
  • Use the built-in sheet enforcer when you need the tab normalized and reformatted.

Current questionnaire contract

One tab per version.

Keep all languages stacked in the same Google Sheet tab. English rows are authoritative for type, required, active, order, scale_id, and randomize_question_order.

Scoring must stay complete.

Every scorable submission must produce exactly the 11 canonical ASC factor rows. A missing, duplicate, or non-canonical scale_id blocks capture or export instead of silently producing a partial dataset.

Context drives peer buckets.

q0 and q1 feed peer comparison context. Raw context can be stored for canonicalization, but participant comparison dropdowns only expose enabled rows from the comparison_tokens registry.

Some flow pieces are app-side.

The consent block and first-slider reminder are not sheet rows. q_free, when present, is the last questionnaire page before feedback. The parked experience_tracer is not part of the active sheet contract.

Stable comparison tokens

Use comparison_tokens to promote stable peer buckets.

The questionnaire tab and the comparison registry have different jobs. The questionnaire tab decides what participants can select and submit. The comparison_tokens tab decides which stable buckets can appear in the feedback comparison controls.

Questionnaire options collect data.

Adding Breathwork, Box Breathing, or a new event-specific option to the questionnaire lets participants submit that value.

Stable tokens preserve history.

A token such as breathwork or berlin_breathwork_days_2026 should stay fixed even if the participant-facing label changes later.

Enabled rows drive the feedback UI.

Only rows with comparison_enabled=1 appear in the comparison dropdowns. If there is no peer data yet, the option can still appear, but the peer plot will show an empty comparison state.

Aliases protect old labels.

Put old labels, spelling variants, and translated legacy labels in aliases so historical submissions still map to the same internal token.

Columns to maintain

  • kind: use induction or dose.
  • token: stable internal value, for example breathwork or berlin_breathwork_days_2026.
  • label_en, label_de, label_es: participant-facing labels for comparison controls.
  • induction_token: optional for dose rows; use it when a dose belongs under one induction, for example breathwork.
  • aliases: semicolon-separated old labels and alternate spellings that should map to the same token.
  • comparison_enabled: set to 1 to show the row in comparison controls; set to 0 to keep it mapped but hidden.
  • sort_order: stable display order.

How q0 and q1 connect to comparison buckets

q0 is the main induction field. q1 is the second field whose meaning depends on the selected induction: for a substance it can be dose level, for Floatation it can be session duration, and for Auto-induced Cognitive Trance it can be the method or institute. The questionnaire tab can collect all of those labels, but the feedback comparison controls only understand labels that can be mapped to enabled stable tokens.

For the current wide q1 format, each induction has a triplet in the questionnaire tab: the induction label, the q1 option list, and the q1 prompt. If a q1 option should be used as a peer-comparison bucket, add a matching dose row in comparison_tokens and set induction_token to the parent induction token. This keeps induction-specific options separate from the global low, medium, and high dose buckets.

Example rows

Induction floatation Labels: Floatation / Floatation / Flotación Aliases: floating; floatation-REST Enabled: 1 · Sort: 70
Scoped dose minutes_61_to_90 Parent: floatation Labels: 61 to 90 minutes / 61 bis 90 Minuten / De 61 a 90 minutos Enabled: 1 · Sort: 110
Induction auto-induced_cognitive_trance Labels: Auto-induced Cognitive Trance Aliases: auto-induced cognitive trance Enabled: 1 · Sort: 100
Scoped dose trance_science_research_institute Parent: auto-induced_cognitive_trance Labels: Trance Science Research Institute Enabled: 1 · Sort: 100
Global dose low Parent: blank Labels: Low / Niedrig / Baja Use only when the induction has no scoped dose rows.

Checklist for induction-specific q1 options

  1. 1
    Confirm the questionnaire triplet.

    In the current questionnaire tab, check that the q0 induction label, q1 option list, and q1 prompt are aligned in each language block.

  2. 2
    Create the induction token if it does not exist.

    Add a kind=induction row with a stable token, translated labels, useful aliases, and the intended enabled state.

  3. 3
    Create scoped dose rows for q1 options that should compare peers.

    Use kind=dose, set induction_token to the parent token, and put the exact current labels plus old spellings in aliases.

  4. 4
    Verify the feedback dropdowns on /dev/.

    Open a dev-test link with the intended induction and dose, jump or complete the questionnaire, and confirm the comparison line and share image use the same scoped q1 label.

URL checks

Use direct dev-test links when checking whether a q0/q1 pair maps correctly. The top line reflects the current submission context; the comparison controls and the share image reflect the stable comparison-token mapping. Those should match unless you are deliberately comparing against a different peer bucket.

https://alteredxproject.com/dev/?lang=de&induction=Floatation&dose=61+bis+90+Minuten https://alteredxproject.com/dev/?lang=en&induction=Auto-Induced+Cognitive+Trance&dose=Trance+Science+Research+Institute

Safe workflow

  1. 1
    Add or rename the questionnaire option.

    This changes what participants can submit in the running survey.

  2. 2
    Add or update the matching registry row.

    Choose a stable token. Do not change that token later just because the visible label changes.

  3. 3
    Keep new buckets hidden until they are intended for comparison.

    Use comparison_enabled=0 while collecting or testing. Switch to 1 only when collaborators agree it should appear publicly in the comparison controls.

  4. 4
    Notify the app maintainer after token or alias changes.

    The peer-plot cache should be rebuilt after mapping changes so historical rows use the updated canonical tokens.

Google Sheets workflow

  1. 1
    Open the current shared questionnaire tab.

    Confirm you are working in the intended version before changing anything.

  2. 2
    Make the content change.

    Update wording, translations, options, or structural rows in the stacked table. Keep the same columns across language blocks.

  3. 3
    Keep stable questions stable.

    Keep the same item_id when the question is still the same underlying question, and keep scorable English rows mapped through canonical scale_id values.

  4. 4
    Update comparison_tokens when comparison eligibility changes.

    Do this only when an induction or dose should map to a stable peer bucket. New questionnaire options do not automatically become comparison options.

  5. 5
    Let the sheet enforcer sync the tab.

    If the Google Sheets Apps Script is installed, it will auto-sort language blocks, keep the expected header shape, and apply the row formatting the questionnaire uses.

  6. 6
    Create a new dated tab when the version truly changes.

    Use a new dated version when the questionnaire definition should be tracked separately.

  7. 7
    Open the running survey once if you want confirmation.

    That is enough to see whether the latest sheet version was picked up. For response logic or scoring changes, complete one submit path and confirm that feedback renders.

  8. 8
    Tell download users if files may change.

    If the change affects the meaning of later exports or codebooks, let OSF users know what to expect.

What the Google Sheets enforcer does

  • If installed, the Apps Script runs on edit and is also available from the AXP Sheet menu as Sync questionnaire sheet.
  • It keeps the questionnaire tab in the expected header order and auto-sorts each language block by the English row order.
  • It colors and formats rows from the English structural metadata, including active state and scale_id.
  • It checks that explicit induction_method_N, dose_options_N, and dose_label_override_N triplets are structurally complete before syncing.
  • It helps keep the sheet structurally valid and readable, but it is not a separate publish step. The running survey still reads the questionnaire from the sheet itself.

Questionnaire adaptation flow

Use this when you want the full path from a sheet edit into the running survey.


          

Change impact map

Use this when you need to decide whether the edit is a light wording change or a real version change.