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, scale_id, and randomize_question_order. The numeric order field is retained for compatibility; it does not control the current questionnaire sequence.

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.

Question order and ASC source mapping

Local IDs, presentation order, and 5D-ASC item numbers are different things.

An AXP item_id is a stable app and data key. It is not a 5D-ASC item number and it is not a factor number. For example, q2 maps to source item 8, not source item 2.

What controls participant order

  • q0, q1, and q_context are fixed on the combined entry step; q_free, when present, is fixed at the end.
  • With randomize_question_order=0, active sliders appear in their physical row sequence inside the selected language block.
  • With randomize_question_order=1 on the English q0 row, the app shuffles those slider rows for the participant. It does not shuffle the fixed entry or final items.
  • The numeric order column is compatibility metadata, not a second ordering mechanism. Editing it alone does not change the displayed sequence.

How the 42 AXP ASC items map to German and Spanish

The AXP ASC crosswalk selects 42 non-consecutive items from the original 94-item 5D-ASC. It preserves each selected source number: q2 → 8, q3 → 9, q4 → 12, q5 → 14, and finally q43 → 94. Therefore, “8 through 94” means the lowest and highest selected source numbers, not that AXP contains all 87 items in that interval.

The published Spanish questionnaire explicitly identifies itself as a translation of the Hasler/Cahn English version and credits the original German scale to A. Dittrich, D. Lamparter, and M. Maurer. The source number in the AXP crosswalk therefore identifies the same numbered item across the German source lineage and Spanish translation; the wording changes by language, while the source number is retained. The scale_id is separate: it assigns an AXP item to a scoring factor and does not determine its source number or presentation order.

AXP local ID 5D-ASC source item Meaning
q28First selected AXP source item; it is not “German item 2.”
q39Next selected source item.
q412Items 10 and 11 are not in the AXP 42-item crosswalk.
The 42 selected source numbers remain increasing but have gaps.
q4394Last selected AXP source item.

Download the complete 42-item numeric crosswalk

Sources: the published Spanish 94-item adaptation; bibliographic record for Dittrich, Lamparter, and Maurer’s 2006 German 5D-ABZ manual; and a current scholarly article describing the 94-item original German version and its German/English supplement.

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 groups existing rows into language blocks, preserves each block’s existing row sequence, keeps the expected header shape, and applies the questionnaire formatting. It does not sort questions using order.

  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 groups rows into language blocks while preserving the existing row sequence within each block. It does not sort questions by the numeric order field or by 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.