G20 INDEX.HTML
│
▼
G20_Bridge.gs
│
┌────────────┼────────────┐
▼ ▼ ▼
G20_Questions.gs G20_Responses.gs bestaande Code.gs
│ │ │
│ │ ├── Login
│ │ ├── Wachtwoord
│ │ ├── Reset
│ │ └── bestaande functies
│ │
│ ├── Autosave
│ ├── Hervatten
│ ├── Bewerken
│ ├── Afronden
│ └── Sheet backup
│
▼
Vragen
│
▼
Google Sheets
We kunnen elk antwoord direct opslaan, terwijl de gebruiker de vragen als één vloeiende stap-voor-stap ervaring doorloopt.
G20
│
├── Vraag 1
│ └── antwoord → DIRECT opslaan
│
├── Vraag 2
│ └── antwoord → DIRECT opslaan
│
├── Vraag 3
│ └── antwoord → DIRECT opslaan
│
├── ...
│
└── Laatste vraag
└── overzicht → definitief afronden
De gebruiker ziet steeds één vraag centraal:
G20 — Dagelijks Geluksbesef
Hoe gelukkig voel je je vandaag?
😞 😕 😐 🙂 😄
Daaronder bijvoorbeeld:
← Terug Opslaan & volgende →
Maar daarnaast ondersteunen we swipen:
swipe links → volgende vraag
swipe rechts → vorige vraag
teruggaan mag
eerder gegeven antwoord wordt opnieuw geladen
antwoord kan worden aangepast
bij wijzigen wordt de bestaande Sheet-record bijgewerkt
Ik zou dit zelfs iets robuuster maken dan alleen opslaan wanneer iemand op Volgende drukt.
Bijvoorbeeld:
Gebruiker kiest antwoord
↓
antwoord lokaal in browser bewaren
↓
antwoord direct naar Apps Script
↓
Apps Script schrijft naar Sheet
↓
✓ opgeslagen
Daarmee hebben we twee beschermingslagen:
Laag 1 — browser
huidige sessie
tijdelijk lokaal antwoord
voorkomt verlies wanneer iemand per ongeluk teruggaat of de pagina opnieuw opent
Laag 2 — Google Sheet
permanente backup
antwoord staat vrijwel direct online opgeslagen
gebruiker hoeft niet eerst alle 20/30 vragen af te maken
Ik zou hiervoor niet voor iedere vraag een aparte kolom gebruiken als we flexibel willen uitbreiden.
Bijvoorbeeld:
ResponseID
User
Datum
VraagID
Vraag
Antwoord
Tijd
Status
G20-001
gebruiker
19-09-2026
Q01
Hoe gelukkig...?
4
19:04
saved
G20-001
gebruiker
19-09-2026
Q02
Waar ben je dankbaar voor?
...
19:05
saved
G20-001
gebruiker
19-09-2026
Q03
...
...
19:06
saved
Dat heeft een groot voordeel: we kunnen later 20, 30, 50 of 100 vragen gebruiken zonder de database-architectuur opnieuw te bouwen.
Als iemand bij vraag 8 stopt:
G20
Vraag 8 van 30
████████░░░░░░░░░░░░ 27%
[ antwoord ]
← Terug Volgende →
En later opnieuw inlogt:
Je G20-sessie is nog niet afgerond.
Je was gebleven bij vraag 8.
[ Verdergaan ]
De antwoorden 1 t/m 7 worden vanuit de Sheet teruggehaald.
Na de laatste vraag:
Je hebt alle vragen beantwoord.
Daarna:
antwoorden controleren
terug naar een vraag
antwoord wijzigen
opnieuw opslaan
definitief afronden
En pas dan:
✓ G20 afgerond
Daarna kunnen we bijvoorbeeld automatisch:
geluksscore berekenen
persoonlijke samenvatting maken
coachingkaart genereren
favoriete antwoorden bewaren
resultaten terugzien in profiel
export naar JSON/CSV/PDF maken
coachingtekst genereren
Ik zou de bestaande Code.gs en Index.html niet opnieuw schrijven vanaf nul.
We voegen bijvoorbeeld een:
G20_Responses.gs
toe met functies zoals:
g20SaveAnswer()
g20LoadSession()
g20LoadAnswer()
g20UpdateAnswer()
g20CompleteSession()
De bestaande:
Code.gs
blijft verantwoordelijk voor de bestaande applicatie/login/routering.
En Index.html krijgt de nieuwe één-vraag-per-scherm interface en autosave-functionaliteit.
Zo bouwen we dus bovenop wat al werkt, in plaats van de bestaande functionaliteit kleiner te maken.
Dit is wat mij betreft de juiste basis voor de verdere G20-opbouw. Zodra je de huidige volledige Index.html en Code.gs geeft, kan ik deze structuur daar rechtstreeks in verwerken, zonder de bestaande login- en wachtwoordfunctionaliteit eruit te halen.