Bij ⚙ Instellingen hetzelfde: uitsluitend instellingen, kleuren, voorkeuren enzovoort.
Bij 🎾 Intervisies krijg je de actieve/geplande intervisies en het invulformulier.
Bij 📁 Dossier alleen jouw dossiers, versies, back-ups, ontwikkeling en rapportages.
Dat is veel bruikbaarder dan “Intervisie 1” en “Intervisie 2”.
Ik zou voortaan één vaste, automatisch opgebouwde weergavetitel gebruiken:
datum · tijd · type/thema · spreker · locatie
Dus bijvoorbeeld:
8-5-2026 · 14:00–16:00 · Kwartaalsessie Didactiek & Jeugdontwikkeling · Uriel Maarssen · locatie nog invullen
en uit je poster:
6-11-2026 · 14:00–17:00 · Kwartaalsessie Techniek · Sven Boele · TPC Unicum
De poster ondersteunt voor 6 november expliciet 14:00–17:00, TPC Unicum en Sven Boele. Voor de andere geplande momenten gebruiken we volgens jouw afspraak standaard 14:00–16:00, totdat voor zo'n bijeenkomst een afwijkende tijd is ingevuld.
Voor gewone intervisies zonder bekende spreker wordt het bijvoorbeeld:
5-6-2026 · 14:00–16:00 · Intervisie · spreker nog invullen · locatie nog invullen
Belangrijk is dat we titel en onderliggende velden niet door elkaar halen. Datum, begin/eindtijd, locatie, type/thema en spreker blijven aparte Sheet-velden. De zichtbare titel wordt daar automatisch uit samengesteld, maar als SUPERADMIN kun je ook een eigen titel/omschrijving invullen.
Ook in Overzicht wil ik dan direct een kleine ✏️ Bewerken-actie naast iedere bijeenkomst. Daarmee kun je zonder eerst het hele dossier te openen snel titel/thema, datum, 14:00–16:00, locatie en spreker corrigeren. Na opslaan verandert dezelfde omschrijving in Overzicht, Intervisies, Agenda, Inbox/intervisiegroep en exports.
En de huidige Intervisie 1 en Intervisie 2 moeten we niet laten staan als betekenisloze namen. We kunnen ze vanuit hun bekende gegevens omzetten naar bijvoorbeeld 1-10-2026 · Intervisie · Leiden Unicum en 3-10-2026 · Intervisie · Leiden, maar ik ga daarbij geen spreker verzinnen.
Voor de DPS-planning betekent dit bovendien dat we de 17 geplande bijeenkomsten netjes herkenbaar maken, met standaard 14:00–16:00 en alleen 6 november 2026 afwijkend naar 14:00–17:00 op basis van je poster.
Dit vraagt nu om een echte volgende codeversie van vooral IntervisiePlanningDPS.gs plus de overzicht-/agenda-interface. Ik houd daarbij onze nieuwe bestandsnaam aan, dus bijvoorbeeld:
IntervisiePlanningDPS_VERVANGEN_v1_4_2026-10-04_2053_[regels]-regels.gs.txt
en bij de frontend eveneens bestandsnaam → NIEUW/VERVANGEN → versie → datum → tijd → werkelijk aantal regels.
4 Oktober 2026 11h09 ~
De mobiele referentie van Laurens geeft eigenlijk een heel bruikbare richting voor de hele Padel Intervisie-app, niet alleen de Inbox.
Op desktop zou ik juist de beschikbare breedte veel beter benutten. Nu staat bijna alles in een relatief smalle middenkolom terwijl links en rechts veel zwart ongebruikt blijft. Voor Inbox kunnen we naar ongeveer 25% / 50% / 25% over vrijwel de volledige schermbreedte: links contacten/filters en nieuw gesprek, midden het actieve gesprek, rechts alle recente gesprekken. De middelste chat krijgt de meeste ruimte.
Op mobiel zou ik juist niet proberen die drie desktopkolommen onder elkaar te proppen. De referentie die je van Laurens kreeg is sterker: één scherm, één hoofdtaak, grote duidelijke kaarten en een vaste navigatie onderaan. Voor Intervisie kunnen we dat vertalen naar bijvoorbeeld:
. Ik heb dit nu als V3.6 agenda- en voorinvulmodule gemaakt, zonder Code.gs of de CORE Index.html opnieuw te veranderen.
De belangrijkste verbetering is: gegevens die al bekend zijn, worden hergebruikt. Dus niet opnieuw locatie, deelnemers, docent, begeleider, leerdoel enzovoort overtikken.
Wanneer je een intervisie opent, haalt de module automatisch bekende informatie uit INTERVISIES, TRAINERS, INTERVISIE_DEELNEMERS, INTERVISIE_KNLTB, INTERVISIE_AGENDA en het vorige persoonlijke dossier.
Je krijgt vervolgens 🧩 Bekende gegevens uit de Sheet, met twee mogelijkheden:
↙ Alleen lege velden invullen — veilig; bestaande antwoorden blijven staan.
↻ Bekende gegevens opnieuw invullen — bekende Sheet-gegevens mogen de betreffende velden opnieuw vullen.
Daarmee kunnen onder andere automatisch worden ingevuld: titel/thema, datum, locatie, duur, begeleider/docent, aantal deelnemers, deelnemende trainers met e-mail/KNLTB-nummer/rol, vorm, gezamenlijk leerdoel en vervolgfocus.
Op desktop verschijnt een sticky agenda rechts naast de intervisiemodule. Op mobiel verhuist hij automatisch onder/boven de inhoud zodat het scherm niet te breed wordt.
Per agenda-item zie je bijvoorbeeld:
Intervisie mentale vaardigheden
📅 dag datum 2026 · tijd
📍 locatie + adres
🎯 leerdoel
Open intervisie
Daarmee gaan we dus van losse formulieren naar een echte reeks geplande intervisies.
Voor bevoegde gebruikers verschijnt bovendien 🗓 Nieuwe intervisie plannen · beheer.
Daarin staan nu velden voor titel/thema, datum, starttijd, eindtijd, duur, locatie, adres, fysiek/online/hybride, spreker, docent/intervisieleider, meerdere hoofdtrainers, aangemelde deelnemers, leerdoel van deze intervisie, focus voor volgende intervisie(s), programma/tijdschema en praktische details.
Bij opslaan wordt ook een echte INTERVISIES-registratie gekoppeld. Daardoor kan dezelfde geplande bijeenkomst later het gezamenlijke verslag én de persoonlijke dossiers dragen.
De huidige vaste planner-admins worden automatisch:
stijn.gabeler@gmail.com
padelstijn@gmail.com
Daarnaast komt een nieuw tabblad PLANNER_ADMINS. Daardoor kunnen we later bijvoorbeeld Laurens of een eigenaar van een andere padelschool beheerrechten geven zonder Code.gs te wijzigen.
Voeg dit nieuwe bestand toe:
Agenda.gs
Vervang de inhoud van je huidige ModuleIntervisiePlus.html door:
En gebruik de bijgewerkte installer:
InstallModules_v3_6.gs
Daarna voer je één keer uit:
installIntervisiePlatformModules()
Dat voegt migratie-veilig de nieuwe tabbladen/kolommen toe, waaronder:
INTERVISIE_AGENDA
PLANNER_ADMINS
Je bestaande gebruikers, dossiers en intervisies worden daarbij niet bewust opnieuw geïnitialiseerd.
Code.gs blijft CORE. Index.html blijft CORE. De uitbreiding zit volledig in de nieuwe modulelaag.
Een volgende nuttige uitbreiding hierop is dat de vorige leerdoelen en vervolgafspraken zichtbaar naast de volgende geplande intervisie komen te staan: bijvoorbeeld vorige afspraak → uitgevoerd? → resultaat → nieuw leerdoel. Daarmee wordt de agenda tegelijk een persoonlijke ontwikkellijn.
Minimaal 4 trainers = jijzelf + minimaal 3 andere trainers.
Dus zodra jij een intervisie opent, moet het systeem jou automatisch als deelnemer selecteren. Je hoeft jezelf niet handmatig aan te vinken. Daarna kies je minimaal 3 andere trainers uit TRAINERS.
De validatie wordt daarmee:
1 ingelogde trainer + minimaal 3 andere aanwezige trainers = minimaal 4 deelnemers
Daarbij krijgt iedereen een eigen rol, bijvoorbeeld deelnemer, casusinbrenger, intervisieleider of observator, plus aanwezigheid en deelname-uren. Jouw eigen profielgegevens — naam, e-mail, telefoon en KNLTB-nummer — worden automatisch vanuit je gekoppelde trainer-/gebruikersprofiel meegenomen.
Ik zou bovendien in de interface niet meer schrijven “Selecteer minimaal 4 trainers”, maar:
Deelnemers aan deze intervisie
✓ Jijzelf – automatisch toegevoegd
Selecteer minimaal 3 andere trainers
Totaal: 1/4 trainers → 2/4 → 3/4 → ✓ 4/4 minimum bereikt
En opslaan/afronden mag pas als er minimaal 4 aanwezige trainers inclusief jezelf zijn.
Dit hoort in Trainers.gs + KNLTB.gs/ModuleIntervisiePlus.html, dus Code.gs blijft CORE en Index.html hoeft hiervoor niet opnieuw gewijzigd te worden.
De backendmodules werken zonder wijziging aan Code.gs.
Voor nieuwe zichtbare frontendmodules is technisch één permanente uitbreidingspoort in Index.html nodig. Zonder zo'n mount-point kan een extra .gs-bestand geen HTML in een reeds geladen webpagina plaatsen.
Op je screenshot staan de nieuwe .gs-modules en ModuleIntervisiePlus.html al netjes in het Apps Script-project. Nu moet alleen de volledige Index één keer aan de module worden gekoppeld.
Ik heb daarom jouw bestaande volledige V3.4 Index als basis genomen — dus niet opnieuw een minimale Index gebouwd — en daar alleen de permanente modulepoort en automatische IP.mount(...) aan toegevoegd. De JavaScript-syntax van zowel de volledige Index als de module is gecontroleerd: OK.
Gebruik deze complete Index:
Kopieer de hele inhoud daarvan naar je bestaande Index.html.
Daarin staan dus nog steeds je bestaande onderdelen: login/reset, dashboard, profiel, kleuren/presets/ColorBots, actieve intervisies, dossier, versiebeheer, de 14 invulonderdelen, JSON import/export, PDF/DOC/TXT/CSV/JSON, WhatsApp, KNLTB, enzovoort. De module is daar nu aan toegevoegd.
Ik heb ook deze iets veiliger gemaakt. In de vorige versie werd een serverfunctie dynamisch aangeroepen; juist dat soort dynamische google.script.run-constructies heeft ons eerder problemen gegeven. Deze versie gebruikt expliciete serveraanroepen.
Kopieer de inhoud naar het Apps Script-bestand dat bij jou al ModuleIntervisiePlus.html heet.
Niets veranderen aan Code.gs. Dat blijft onze CORE met de inmiddels werkende registratie, wachtwoordreset, login, sessies en bestaande dossierfuncties.
De nieuwe backend blijft in:
Trainers.gs → trainers/profielen
KNLTB.gs → deelnemers, rollen, aanwezigheid, bijdragen en KNLTB
IntervisieData.gs → follow-up/persoonlijke groei
Reports.gs → groeps- en ontwikkelrapportages
DossierVersions_v3_3.gs → versies/back-ups
ProfileConfig.gs → profiel/configuratie
Selecteer bovenaan in Apps Script:
installIntervisiePlatformModules
en druk één keer op Uitvoeren.
Die installer maakt de aanvullende Sheet-structuur aan. Bestaande login-/dossierdata hoort daarbij niet te worden gewist.
Daarna heb je aanvullend:
TRAINERS
INTERVISIE_DEELNEMERS
INTERVISIE_BIJDRAGEN
INTERVISIE_KNLTB
INTERVISIE_FOLLOWUP
Ga naar Implementeren → Implementaties beheren → Bewerken → Nieuwe versie → Implementeren.
Open vervolgens de nieuwe /exec.
Als je daarna een bestaande intervisie opent, doet V3.5 automatisch:
if(window.IP && i && i.intervisieId){
IP.mount(token,i.intervisieId)
}
Je hoeft dus niet zelf op een aparte “module laden”-knop te drukken.
Onder de bestaande 14 onderdelen verschijnt nu de aanvullende module met 👥 Deelnemers & rollen, waarin je minimaal vier trainers selecteert met rol, aanwezigheid en uren. Daarna volgt de 🔄 Werkelijke intervisieronde met casus → verhelderende/feitelijke vragen → perspectieven → oplossingsrichtingen → feedback → gezamenlijke conclusie.
Daaronder komt 📋 KNLTB-administratie met vorm, intervisieleider/docent, theorie-uren, praktijkuren, inhoud/omschrijving, programma/tijdschema, accreditatiestatus en checklist. Tot slot krijg je 🌱 Follow-up & persoonlijke groei, waarbij de vorige stap wordt opgehaald en je vastlegt wat je wilde proberen, werkelijk deed, zag, veranderde, wat werkte, wat je leerde en wat de volgende stap wordt.
Dat sluit aan op de al bestaande persoonlijke DOSSIER-opzet, waarin een dossier aan intervisieId + userId wordt gekoppeld. Geplakte markdown
Belangrijk: na deze ene vervanging van Index.html hebben we de permanente modulepoort. Daarna gaat Index.html weer op CORE FREEZE en bouwen we verdere uitbreidingen weer in losse modules.
Ik heb dit nu als V3.5-modulelaag opgebouwd. Code.gs blijft volledig ongemoeid.
Er is één technisch punt waarop onze CORE-regel precies doet waarvoor we hem hebben geschreven: een extra .gs-bestand kan wel nieuwe Sheet-tabs, data en functies toevoegen, maar kan niet uit zichzelf nieuwe zichtbare HTML in een reeds geladen Index.html plaatsen. Daarom heb ik de backend volledig modulair gemaakt en voor de frontend één eenmalige permanente modulepoort beschreven. Daarna kan Index weer worden bevroren.
Trainers.gs — TRAINERS, Trainer 1–20, profielgegevens, KNLTB-nr., e-mail, mobiel, organisatie en koppeling met userId.
KNLTB.gs — deelnemers, aanwezigheid, rollen, bijdragen, programma, theorie/praktijk en KNLTB-checklist.
IntervisieData.gs — follow-up en persoonlijke groei over opeenvolgende intervisies.
Reports.gs — gezamenlijk intervisieverslag en persoonlijk ontwikkelrapport.
ModuleIntervisiePlus.html — de nieuwe zichtbare interface.
InstallModules.gs — één installer voor alle nieuwe Sheet-tabbladen.
CORE_BRIDGE_V3_5.md — de ene noodzakelijke frontendkoppeling.
Ik heb de JavaScript-syntax van alle vijf .gs-modules en de JavaScript in de HTML-module gecontroleerd: allemaal OK. Dat is een syntaxcontrole; ze zijn nog niet in jouw Apps Script-runtime uitgevoerd.
De intervisie kan nu daadwerkelijk vier of meer gekoppelde trainers bevatten. TRAINERS wordt automatisch met 20 posities opgebouwd. Laurens aaa, Niels aaa en Rutger aaa staan alvast als eerste drie testtrainers klaar met de afgesproken tijdelijke KNLTB-, telefoon- en e-mailgegevens. Trainer 4–20 kun je in de Sheet verder invullen.
Per geselecteerde trainer leg je vast: aanwezigheid, rol en deelname-uren. Rollen zijn:
casusinbrenger · intervisieleider · deelnemer · observator
De module weigert opslaan wanneer minder dan vier trainers zijn geselecteerd.
De intervisieronde is nu bovendien echt opgebouwd als proces:
Casus/centrale vraag → verhelderende vragen → feitelijke vragen → perspectieven → mogelijke oplossingsrichtingen → feedback → gezamenlijke conclusie.
Iedere ingelogde trainer kan daarbij zijn eigen bijdrage vastleggen. Daarmee krijgen we straks niet alleen “Stijn schrijft op welke feedback hij kreeg”, maar daadwerkelijk individuele bijdragen van de deelnemers.
We houden nu bewust twee gegevensstromen naast elkaar.
INTERVISIEVERSLAG bevat bijeenkomst, deelnemers, rollen, aanwezigheid, bijdragen van collega's, programma, gezamenlijke conclusie en KNLTB-gegevens.
Je bestaande DOSSIER blijft het persoonlijke reflectiedossier per userId + intervisieId: jouw eigen analyse, conclusie, leerdoel, reflectie enzovoort.
Daar bovenop komt INTERVISIE_FOLLOWUP:
Wat wilde ik proberen → wat deed ik werkelijk → wat zag ik → wat veranderde ik → wat werkte → wat leerde ik → volgende stap.
Bij een volgende intervisie zoekt de module automatisch de vorige ontwikkeling van de ingelogde trainer op.
Na één keer:
installIntervisiePlatformModules()
uitvoeren ontstaan:
TRAINERS
INTERVISIE_DEELNEMERS
INTERVISIE_BIJDRAGEN
INTERVISIE_KNLTB
INTERVISIE_FOLLOWUP
Bestaande USERS, INTERVISIES, DOSSIER, AUTH, enzovoort worden niet opnieuw aangemaakt of gewist.
De KNLTB-administratie heeft nu ook de ontbrekende expliciete velden voor vorm, inhoud/omschrijving, intervisieleider/docent, werkelijk programma/tijdschema, theorie-uren, praktijkuren, totaaluren, accreditatiestatus, referentie en notities.
Code.gs: 0 wijzigingen.
Voor Index.html is één permanente mount nodig. De exacte twee toevoegingen staan in:
Daarmee laden we ModuleIntervisiePlus.html één keer vanuit de shell. Daarna wordt dat onze vaste uitbreidingspoort en gaat Index.html opnieuw op slot.
Dit is dus precies de architectuur die we afgesproken hebben: vanaf deze stap hoeven nieuwe dingen zoals presentielijsten, groepsrapportages, herstel van versies, KNLTB-export of uitgebreidere persoonlijke groei niet opnieuw door de login-CORE heen.
ModuleIntervisiePlus.htmlHTML
De backendmodules werken zonder wijziging aan Code.gs.
Voor nieuwe zichtbare frontendmodules is technisch één permanente uitbreidingspoort in Index.html nodig. Zonder zo'n mount-point kan een extra .gs-bestand geen HTML in een reeds geladen webpagina plaatsen.
Plaats op de gewenste plek in de ingelogde dossierweergave:
<div id="moduleIntervisiePlus">
<?!= HtmlService.createHtmlOutputFromFile('ModuleIntervisiePlus').getContent(); ?>
</div>
En roep, nadat een intervisie is geopend en token plus currentIntervisie.intervisieId beschikbaar zijn, éénmaal aan:
if (window.IP && currentIntervisie && currentIntervisie.intervisieId) {
IP.mount(token, currentIntervisie.intervisieId);
}
Daarna is dit de vaste modulepoort. Nieuwe functionaliteit gaat verder naar losse .gs- en Module*.html-bestanden en Index.html wordt weer bevroren.
Laat Code.gs ongewijzigd.
Voeg toe: Trainers.gs, KNLTB.gs, IntervisieData.gs, Reports.gs, InstallModules.gs.
Voeg HTML-bestand ModuleIntervisiePlus.html toe.
Voer installIntervisiePlatformModules() één keer handmatig uit.
Voer bovenstaande eenmalige CORE-bridge in Index.html uit.
Maak een nieuwe deployment.
Ja. Ik heb nu zowel de Index die je meestuurde, je ingevulde intervisie/PDF én de actuele KNLTB-informatie ernaast gelegd. Er zijn drie verschillende dingen die we uit elkaar moeten houden: de intervisie zelf, jouw persoonlijke reflectieverslag, en de KNLTB-administratie/accreditatie.
De melding:
“Eerst afronden en daarna naar padelleraren@knltb.nl verzenden?”
komt uit de knop sendKNLTB() in onze uitgebreidere Index. Het is een browser-confirm: Annuleren doet niets; OK start de opdracht om eerst het dossier als submitted op te slaan en daarna de serverfunctie voor KNLTB-verzending aan te roepen.
Dus: alleen die melding bewijst nog niet dat er daadwerkelijk een e-mail is verzonden.
Er zit bovendien een belangrijk verschil tussen twee manieren van mailen. De knop Eigen e-mail kan een mailto: openen en dan verzend jij werkelijk vanuit het mailaccount/mailprogramma dat jij gebruikt. De huidige “KNLTB via systeem”-route roept daarentegen sendIntervisieToKNLTB(...) in Code.gs aan. Als die functie MailApp/GmailApp gebruikt, wordt het bericht verzonden vanuit het Google-account waaronder de Apps Script-webapp wordt uitgevoerd — niet automatisch vanuit het e-mailadres van iedere ingelogde trainer.
Daarom zou ik de tekst van die knop nu ook veranderen. Niet meer suggereren dat iedere trainer daarmee automatisch vanuit zijn eigen account mailt. Voor jouw bedoeling is “KNLTB e-mail voorbereiden” veiliger: ontvanger, onderwerp, verslag en bijlage voorbereiden en vervolgens de trainer vanuit zijn eigen e-mail laten verzenden.
Als basis voor een zeer uitgebreid persoonlijk reflectieverslag: ja, behoorlijk compleet. De oorspronkelijke Index bevat alle 14 blokken: registratie, casus, doel, handelen, waarnemen, intervisievragen, experimenteren, effect, reflectie/analyse, conclusie, SMART-leerdoel, missie/visie, vervolg en evaluatie. Geplakte tekst De kern van echte intervisie zit vooral al goed in onderdeel 6: collega's stellen verhelderende vragen, zoeken de kernvraag, brengen andere perspectieven in en geven feedback. Geplakte tekst Daarna volgen bewijs van effect, diepere analyse en het persoonlijke praktijkexperiment. Geplakte tekst
Maar voor een volwaardig intervisiesysteem missen we nog iets fundamenteels.
KNLTB omschrijft intervisie actueel als overleg waarbij leren van en met elkaar centraal staat ter verbetering van het eigen functioneren, in een kleine groep van minimaal vier leraren. De KNLTB vermeldt daarbij 1 uur = 1 PO-punt en adviseert de aanvraag bij voorkeur vooraf te doen. Leraren
Dat betekent dat intervisie niet simpelweg is:
trainer → vult 14 vragen over zichzelf in → exporteert PDF.
De sterkere structuur is:
casusinbrenger → collega's → onderzoekende vragen → verschillende perspectieven → reflectie → gekozen experiment → toepassen in praktijk → terugkoppelen → gezamenlijk leren.
Daarom zou ik je huidige 14 blokken niet verwijderen of verkorten. Ze zijn juist waardevol. Ik zou er een tweede laag bovenop bouwen.
Deelnemersregistratie per intervisie. Niet alleen een tekstveld met namen, maar vier of meer gekoppelde gebruikers: naam, e-mail, eventueel licentienummer, aanwezigheid, rol en deelname-uren.
Rollen. Bijvoorbeeld casusinbrenger, intervisieleider/begeleider, deelnemer en eventueel observator. Dan kan dezelfde bijeenkomst voor iedere trainer een eigen persoonlijk dossier opleveren.
Intervisieronde. Eerst de casus en centrale vraag, daarna feitelijke/verhelderende vragen van de andere trainers, vervolgens perspectieven en pas daarna mogelijke oplossingsrichtingen. Dat voorkomt dat intervisie meteen een adviesgesprek wordt.
Bijdragen per collega. Nu schrijft één trainer bijvoorbeeld “Welke feedback kreeg ik?”. Beter is dat Laurens, trainer B, trainer C en trainer D ieder hun eigen vraag/perspectief kunnen vastleggen. Daarmee ontstaat aantoonbaar het “leren van en met elkaar” dat KNLTB noemt. Leraren
Gezamenlijk versus persoonlijk verslag. Eén bijeenkomst krijgt een INTERVISIEVERSLAG, terwijl iedere deelnemer daarnaast een PERSOONLIJK REFLECTIEDOSSIER krijgt. Dat onderscheid ontbreekt nu nog.
Follow-up. Bij de volgende intervisie moet de vorige afspraak automatisch terugkomen: Wat wilde je proberen? Wat heb je werkelijk gedaan? Wat zag je? Wat veranderde? Wat werkte? Wat wordt je volgende stap? Dat maakt persoonlijke groei meetbaar over meerdere bijeenkomsten.
Rapportage over ontwikkeling. Niet alleen losse PDF's, maar bijvoorbeeld: intervisies gevolgd, uren, thema's, terugkerende leerdoelen, experimenten, feedbackmomenten, afgeronde vervolgacties en ontwikkeling door de tijd.
KNLTB-administratie apart houden. KNLTB noemt voor accreditatie onder meer type/vorm, inhoud/omschrijving, docent, datum en tijdsduur/programma en verhouding theorie/praktijk. Leraren Onze Index heeft al vorm, inhoud, begeleider, datum en duur, maar theorie/praktijk-verdeling en een werkelijk programma/tijdschema ontbreken nog als expliciete velden. KNLTB biedt op dezelfde pagina ook een apart informatiedocument en aanvraagformulier voor intervisie aan. Leraren
En één formulering in onze Index zou ik aanpassen. Daar staat nu vrij stellig dat “1 uur = 1 PO-punt bij erkende intervisie”. Geplakte tekst De tool moet vooral duidelijk maken: registratie in onze app is geen toekenning door KNLTB.
INTERVISIE
De gezamenlijke bijeenkomst: wie, waar, wanneer, thema, casus, centrale vraag, onderzoekende vragen, perspectieven, gezamenlijke opbrengst.
MIJN REFLECTIE
Jouw huidige 14 onderdelen: wat deed ik, wat zag ik, wat werkte, analyse, conclusie, SMART-leerdoel, missie/visie en experiment.
TERUGKOPPELING
Bij de volgende bijeenkomst: doel → gedaan → gezien → aangepast → effect → geleerd → nieuwe stap. Dat principe staat al in je Index. Geplakte tekst
KNLTB-DOSSIER
De administratieve gegevens en een compacte export die geschikt is voor aanvraag/verwerking: deelnemers, vorm, programma, inhoud, begeleider, uren, theorie/praktijk, evaluatie en eventueel bewijs/bijlagen.
Dat zou van Padel Intervisie veel meer maken dan een invulformulier: een systeem waarin je over maanden daadwerkelijk kunt zien hoe Stijn als trainer groeit, welke leerdoelen terugkomen, wat hij geprobeerd heeft en wat het effect daarvan was, terwijl dezelfde bijeenkomst tegelijk het gezamenlijke intervisieverslag van vier trainers bevat.
En het mooie is: we hoeven daarvoor de 14 bestaande blokken niet opnieuw te ontwerpen. Die worden het persoonlijke reflectiedossier; daarboven bouwen we de echte groepsintervisie en eronder de follow-up/KNLTB-rapportage.
vandaag 7:02
In de KNLTB CHECKLIST willen we ook meteen kunnen aanvinken en kiezen welke trainers er waren, in de sheet mag nu trainer 1 tot 20 staan en dan kan ik kiezen trainers , minimaal nog 3, Zet ook trainer Laurens er vast in de lijst in de sheet en Niels en Rutger achternaam mag nu ingevuld worden op aaa dan vul ik zelf later in de sheet de juiste namen in en voeg in die kolommen ook de ruimte van de profielen info die iedereen invult,zoals knltb nummer email telefoonnr etc Zet knltb nr nu maar op 30900000 voor iedere trainer en telefoonnr op 31600000000 enail op voornaamachternaamtest@gmail.com
Ja. Ik zou de KNLTB-checklist koppelen aan een aparte TRAINERS-tabel, zodat je niet telkens namen en contactgegevens opnieuw hoeft in te voeren.
De Sheet krijgt Trainer 1 t/m Trainer 20. Per trainer bewaren we: trainerId, actief, voornaam, achternaam, volledige naam, KNLTB-nummer, e-mail, mobiel, padelschool/organisatie, rol, profiel/userId en notities. De eerste drie vullen we als startdata: Laurens aaa, Niels aaa en Rutger aaa, alle drie voorlopig met KNLTB 30900000, mobiel 31600000000 en respectievelijk laurensaaatest@gmail.com, nielsaaatest@gmail.com en rutgeraaatest@gmail.com. Trainer 4–20 blijven beschikbaar om later rechtstreeks in de Sheet aan te vullen.
In de KNLTB-checklist wil ik vervolgens geen vrij tekstveld meer als hoofdoplossing, maar 20 aankruisbare trainers. Jij kiest bijvoorbeeld:
☑ Stijn Gabeler · ☑ Laurens aaa · ☑ Niels aaa · ☑ Rutger aaa
Daarbij toont de app automatisch de profielinformatie uit TRAINERS. Omdat KNLTB-intervisie minimaal vier leraren vraagt, kan de checklist meteen tonen 4/4 ✓ of bijvoorbeeld 3/4 — nog minimaal 1 trainer kiezen. De ingelogde trainer kan automatisch als deelnemer worden voorgeselecteerd, zodat er minimaal nog drie anderen gekozen moeten worden.
Belangrijk is dat we de persoonsgegevens niet 20 keer als kolommen in ieder intervisieverslag kopiëren. TRAINERS wordt het adresboek/profielregister; de intervisie bewaart de gekozen trainerId's. Bij export naar PDF/DOC/TXT/CSV/JSON en het KNLTB-verslag halen we vervolgens naam, KNLTB-nummer, e-mail, telefoon en organisatie erbij. Zo werkt een wijziging van bijvoorbeeld Laurens' achternaam later overal netjes door.
Daarnaast zou ik in de checklist meteen opnemen: minimaal 4 trainers, datum, locatie, duur, fysiek/online/hybride, intervisieleider, onderwerp/casus, programma, theorie-uren, praktijkuren, totale uren, aanwezigheid bevestigd, gezamenlijke conclusie, evaluatie en PO/accreditatiestatus. Daarmee wordt het veel meer een echte KNLTB-dossiercheck in plaats van alleen de vier badges die je nu op mobiel ziet.
Ik zou dit als V3.5 toevoegen zonder je werkende login/reset/SMS-code opnieuw te verbouwen. Hiervoor zijn wél een kleine aanvullende .gs-module en Index-aanpassingen nodig, omdat de trainers daadwerkelijk in Google Sheets moeten worden opgeslagen en uitgelezen.
kan je eventuele extra sheet wijzigingen of site frontend wijzigingen ook via een andee extra .gs bestand laten gebeuren zodat we voortaan Code.gs en Index.html kunnen laten zoals het is?
Ja, voor vrijwel alle Sheet- en backend-uitbreidingen kan dat. Dat is vanaf nu zelfs een goede werkwijze: we bevriezen de nu werkende Code.gs en Index.html zoveel mogelijk.
Ik stel deze structuur voor:
Code.gs → CORE, niet meer wijzigen: login, wachtwoord, sessies, bestaande dossierfuncties.
Index.html → CORE frontend, niet meer wijzigen zolang het kan.
Trainers.gs → tabblad TRAINERS, Trainer 1–20, profielgegevens en deelnemersselectie.
KNLTB.gs → checklist, deelnemers, aanwezigheid, uren, rapportage en KNLTB-dossier.
DossierVersions.gs → kopieën, versies, back-ups, herstellen/verwijderen.
IntervisieData.gs → uitgebreidere vragen/antwoorden, JSON import/export en koppelingen.
Config.gs → presets, configuratiegegevens, standaardwaarden.
eventueel later Reports.gs → PDF/DOC/CSV/TXT/rapportagegegevens.
Alle .gs-bestanden in hetzelfde Apps Script-project werken samen alsof het één serverprogramma is. Een functie in Trainers.gs kan dus gewoon sheet_() uit je bestaande Code.gs gebruiken.
Een extra .gs-bestand kan niet rechtstreeks nieuwe HTML-elementen in de al geladen Index.html injecteren, tenzij Index.html daar al een algemeen uitbreidingspunt voor heeft.
Dat kunnen we één keer goed oplossen. We maken bijvoorbeeld één permanente uitbreiding in Index:
<div id="modules"></div>
en één generieke loader. Daarna kan een bestand zoals Modules.gs de configuratie/data voor nieuwe modules leveren. De bestaande Index bouwt daar vervolgens automatisch onderdelen uit op.
Dan hoeven we voor dingen als:
KNLTB-checklist → trainers → aanwezigheid → rapportages → persoonlijke groei → ColorBots → extra instellingen
niet steeds de kern van Index.html opnieuw te herschrijven.
Nog beter is om aparte HTML-modules te gebruiken:
Code.gs ← CORE / bevriezen
Index.html ← CORE shell / bevriezen
Modules.gs
Trainers.gs
KNLTB.gs
IntervisieData.gs
DossierVersions.gs
Reports.gs
ModuleTrainers.html
ModuleKNLTB.html
ModuleIntervisie.html
ModuleReports.html
Apps Script ondersteunt meerdere .html-bestanden in hetzelfde project. Daarmee houden we bijvoorbeeld de enorme 14-delige intervisie uit de hoofd-Index.
Mijn voorstel vanaf V3.5: één laatste keer Index.html ombouwen tot een modulaire shell. Daarna markeren we Code.gs en Index.html als CORE – NIET WIJZIGEN en bouwen we nieuwe functies in losse .gs- en .html-modules.
Dat voorkomt precies wat eerder gebeurde: een nieuwe functie toevoegen en daarbij per ongeluk login, wachtwoordreset, dossier of andere werkende onderdelen beschadigen.
Ja top, maak er een harde voorwaarde van voor nu en schrijf een md voor het loginsystemen maken en dan verder ontwikkelen van dergelijke sites, Code.gs → CORE, niet meer wijzigen: login, wachtwoord, sessies, bestaande dossierfuncties. Index.html → CORE frontend, niet meer wijzigen zolang het kan. Trainers.gs → tabblad TRAINERS, Trainer 1–20, profielgegevens en deelnemersselectie. KNLTB.gs → checklist, deelnemers, aanwezigheid, uren, rapportage en KNLTB-dossier. DossierVersions.gs → kopieën, versies, back-ups, herstellen/verwijderen. IntervisieData.gs → uitgebreidere vragen/antwoorden, JSON import/export en koppelingen. Config.gs → presets, configuratiegegevens, standaardwaarden. eventueel later Reports.gs → PDF/DOC/CSV/TXT/rapportagegegevens
Analyse gepauzeerd
Geanalyseerd
Ja. Vanaf nu behandel ik dit als een harde ontwikkelvoorwaarde voor Padel Intervisie én als blauwdruk voor vergelijkbare Google Apps Script-sites.
Ik heb de afspraak uitgewerkt tot een Markdown-document met onder andere de CORE-freeze, login-first protocol, securityregels, Sheet-architectuur, moduleverdeling, versiebeheer, intervisiedatamodel, import/export, KNLTB/mailregels en een expliciete CORE Change Exception.
De hoofdregel staat er expliciet in:
Code.gs en Index.html zijn CORE.
Nieuwe functionaliteit gaat standaard naar losse .gs-modules en Module*.html-bestanden. Alleen als iets aantoonbaar technisch niet via een module kan, mag een minimale CORE-wijziging worden voorgesteld — met uitleg en terugrolmogelijkheid.
Voor onze volgende stap betekent dit concreet dat de Trainer 1–20 + KNLTB-checklist naar Trainers.gs en KNLTB.gs gaat. We gaan dus niet opnieuw de inmiddels werkende loginbasis verbouwen.
[{"id":"q1","section":"Doel","text":"Wat was mijn doel?"},{"id":"q2","section":"Handelen","text":"Wat heb ik gedaan?"},{"id":"q3","section":"Kijk & ervaar","text":"Wat zag ik feitelijk gebeuren?"},{"id":"q4","section":"Kijk & ervaar","text":"Wat hoorde of merkte ik bij mijn speler(s)?"},{"id":"q5","section":"Kies & probeer","text":"Wat heb ik aangepast?"},{"id":"q6","section":"Effect","text":"Wat was het effect op de mentale ontwikkeling van mijn speler(s)?"},{"id":"q7","section":"Effect","text":"Wat was het effect op tactische keuzes en spelgedrag?"},{"id":"q8","section":"Effect","text":"Wat was het effect op zelfstandigheid en eigenaarschap?"},{"id":"q9","section":"Intervisie","text":"Welke vragen of feedback van collega-trainers brachten mij verder?"},{"id":"q10","section":"Analyse","text":"Wat werkte en waarom werkte dit?"},{"id":"q11","section":"Analyse","text":"Wat werkte nog niet en wat kan daarvan de oorzaak zijn?"},{"id":"q12","section":"Analyse","text":"Welke concrete observaties ondersteunen mijn analyse?"},{"id":"q13","section":"Leren","text":"Wat heb ik hiervan geleerd als trainer?"},{"id":"q14","section":"Leren","text":"Welke kwaliteit wil ik behouden en welke gewoonte wil ik veranderen?"},{"id":"q15","section":"Vervolg","text":"Wat is mijn SMART persoonlijke leerdoel?"},{"id":"q16","section":"Vervolg","text":"Wat ga ik in mijn volgende padeltrainingen concreet proberen?"},{"id":"q17","section":"Vervolg","text":"Hoe ga ik het resultaat observeren of meten?"},{"id":"q18","section":"Missie","text":"Wat is mijn missie als padeltrainer?"},{"id":"q19","section":"Visie","text":"Wat is mijn visie op hoe spelers het beste leren?"},{"id":"q20","section":"Visie","text":"Wat betekent deze intervisie voor mijn toekomstige padeltrainingen?"}]
https://script.google.com/macros/s/AKfycbwCxV8QFsuQz5h_VZE2YlS_JJC_naPtWTHne7Pt4y8HTK8QA-Emr6ls8cBi6z5B8Nd9ZA/exec 2e versie kort en niet compleet
De screenshot laat zien dat de Sheet-koppeling nu daadwerkelijk reageert: de app leest INTERVISIES, DOSSIER, teams en berichten. Omdat er nog geen actieve intervisie is aangemaakt, zie je terecht “geen actieve intervisies” en dus ook nog niet het grote invulformulier.
Je eerste Index bevatte inderdaad veel meer: 14 volledige onderdelen met casus, context, spel-/leerprobleem, centrale intervisievraag, doelen, handelen, observaties, feedback, aanpassingen, effecten, analyse, SMART-leerdoel, missie/visie, vervolg en evaluatie. index Interventies 1 index Interventies 1 Die zitten in V3.2 weer allemaal in het formulier.
Ik heb daarom V3.2 gemaakt met jouw nieuwe richting: zwart als basis, oranje randen/accenten, witte tekst, plus persoonlijke instellingen voor kleuren, achtergrond, font, lettergrootte en afronding. Ook zijn Profiel, Instellingen en Inbox toegevoegd.
Omdat profielinstellingen per trainer in de Sheet bewaard moeten blijven, is alleen Index aanpassen daarvoor technisch niet genoeg. Ik laat je bestaande werkende Code.gs daarom volledig ongemoeid en voeg één afzonderlijk Apps-Scriptbestand toe:
ProfileConfig_v3_2.gs
Voeg dat als nieuw .gs-bestand toe en voer één keer installProfileModule() uit. Daarmee komt een extra tabblad USER_PROFILES voor padelschool, licentienummer, standaard e-mailontvangers, KNLTB-adres en persoonlijke UI-instellingen. Je bestaande login, wachtwoorden, SMS, dossier en Code.gs blijven dus intact.
Een gepubliceerde intervisie gaat naar INTERVISIES. Zodra een trainer die opent, worden alle antwoorden van het 14-delige formulier opgeslagen in DOSSIER; je bestaande backend gebruikt daarvoor answersJson en daarnaast de belangrijke samenvattingsvelden. De backend beschikt al over saveDossier() en leest het persoonlijke dossier terug via getIntervisie(). 2129 03102026 appsscript json 17
Ook de bestaande export-backend ondersteunt al PDF, DOCX/DOC, TXT, CSV en JSON. Ik heb de knoppen daarvoor in V3.2 behouden. WhatsApp maakt een deeltekst van de belangrijkste reflectievelden.
Hier moeten we één technisch onderscheid goed maken. De bestaande serverfunctie gebruikt MailApp.sendEmail(). Zo'n bericht wordt verzonden door het Google-account waaronder de Apps Script-webapp draait; replyTo:user.email maakt de ingelogde trainer wel het antwoordadres, maar verandert de daadwerkelijke afzender niet. Je huidige backend doet precies dat bij KNLTB-verzending. 2129 03102026 appsscript json 17
Daarom heb ik in V3.2 twee mogelijkheden gescheiden:
✉ Eigen e-mail opent voor de ingelogde trainer zijn/haar eigen mailprogramma met ontvangers, onderwerp en intervisietekst alvast ingevuld. Als stijn.gabeler@gmail.com is ingelogd, wordt het dus vanuit diens eigen Gmail verzonden nadat die gebruiker op Verzenden drukt. Voor andere trainers geldt hetzelfde met hun eigen mailaccount.
KNLTB via systeem blijft de bestaande Apps Script-servermail. Dat is handig voor automatische verzending, maar die kan niet zomaar per ingelogde gebruiker van afzender wisselen.
Voor werkelijk één-klik automatisch versturen vanuit ieder persoonlijk Gmail-account hebben we later per trainer Google OAuth/Gmail-autorisatie nodig. Dat kan niet alleen in Index.html.
De SMS-verificatie die je al hebt ingesteld laten we staan. Daarnaast gebruikt de app de bestaande MESSAGES-gegevens voor 💬 Inbox & berichten. Je backend heeft al berichten voor bijvoorbeeld nieuwe intervisies, teams en KNLTB-updates. De echte ontvangst van willekeurige inkomende SMS-berichten van je SMS-server is een volgende aparte stap: daarvoor moet de SMS-provider een webhook naar Apps Script kunnen sturen. Dat wil ik niet gokken zonder het exacte inbound/webhook-formaat van jouw SMS-server.
Nu doen: Index.html vervangen door V3.2 → ProfileConfig_v3_2.gs toevoegen → één keer installProfileModule() uitvoeren → nieuwe deployment maken. Daarna kun je in Beheer → nieuwe intervisie een testintervisie publiceren. Zodra je die opent, verschijnt het complete 14-delige formulier en kunnen we meteen controleren of een ingevuld antwoord daadwerkelijk in DOSSIER terechtkomt.
https://script.google.com/macros/s/AKfycbyC4DiUq6GiZsewvJILwLQdOXDtcUT8fiFhaBNmbleeiprn_RjAsXcPrL7quV0Qp8I6OA/exec 1e login gelukt 2130 03102026
Dit is precies de goede volgende stap: van een los intervisieformulier naar een Padel Intervisie Platform met Google Sheets als database en Apps Script als backend.
Ik zou de structuur zo bouwen:
Account → Dashboard → Actuele intervisie → vraag-voor-vraag → tussentijds opslaan → reflectie → conclusie → persoonlijk leerdoel → dossier → teamdeling → export → eventueel KNLTB.
De KNLTB-kaders kunnen we daarbij in het systeem vastleggen. De actuele KNLTB-pagina noemt voor intervisie minimaal vier leraren en 1 uur = 1 PO-punt, en adviseert vooraf een aanvraag te doen. Voor accreditatie zijn onder andere type, inhoud, docent, datum/tijdsduur en theorie/praktijkverdeling relevant. Leraren
Belangrijk is dat we “verstuur naar KNLTB” niet gelijkstellen aan “PO-punten toegekend”. De KNLTB bepaalt de accreditatie. Leraren
Ik stel deze tabbladen voor:
USERS — accounts, e-mail, mobiel, wachtwoord-hash, rol
OTP — tijdelijke registratie/herstelcodes
AUTH — ingelogde sessies
INTERVISIES — door admins aangeboden intervisies
DOSSIER — persoonlijke antwoorden/resultaten
TEAMS — teams/padelscholen
TEAM_MEMBERS — koppeling trainers ↔ teams
MESSAGES — persoonlijke berichtenbox
KNLTB_UPDATES — gedetecteerde wijzigingen
SETTINGS — systeeminstellingen
De twee beheerders kunnen in eerste instantie automatisch worden herkend via padelstijn@gmail.com en stijn.gabeler@gmail.com.
Voor versie 1 zou ik e-mailcode + zelfgekozen wachtwoord gebruiken. Apps Script kan rechtstreeks verificatiecodes per e-mail verzenden. SMS kan niet rechtstreeks via Apps Script; daarvoor hebben we later een SMS-provider zoals Twilio nodig.
Een wachtwoord moet bovendien niet leesbaar in de Sheet staan. Het systeem moet alleen een salted hash bewaren.
Daarna kan een trainer inloggen met:
e-mailadres + wachtwoord
of
mobiel nummer + wachtwoord
Het mobiele nummer is dan een accountidentifier; verificatie gebeurt in eerste instantie via het gekoppelde e-mailadres.
Dit vind ik het belangrijkste onderdeel van de nieuwe Index.html.
Niet alle 20 vragen tegelijk, maar:
Vraag 4 / 17
Wat zag ik daadwerkelijk gebeuren?
[ groot antwoordveld ]
← Vorige | Opslaan & volgende →
Met een voortgangsbalk erboven.
Iedere stap wordt meteen in DOSSIER opgeslagen. Daardoor kan iemand stoppen en later doorgaan zonder antwoorden kwijt te raken.
Aan het einde komen de zwaardere onderdelen:
Samenvatting → Analyse → Conclusie → Persoonlijk leerdoel → Missie → Visie → Vervolgopdracht
Dat maakt het veel meer dan een vragenlijst.
Een individuele intervisie en teamintervisie moeten we ook scheiden.
Bijvoorbeeld:
Team Dutch Padel School – Trainersintervisie Mentale Vaardigheden
Stijn vult zijn eigen reflectie in.
Trainer B vult zijn reflectie in.
Trainer C vult zijn reflectie in.
Trainer D vult zijn reflectie in.
Na Versturen naar team kunnen de daarvoor bedoelde onderdelen worden samengebracht tot:
individuele inzichten → overeenkomsten → verschillen → gezamenlijke analyse → gezamenlijke conclusie → teamleerdoel → vervolg trainers-training.
Daarmee krijgen we uiteindelijk zelfs een Team Intervisie Dossier.
Ook je idee rond de KNLTB-pagina kunnen we automatiseren. De KNLTB publiceert daar momenteel onder andere informatie over fysieke, interne en digitale ontwikkeling, veilige sportomgeving, intervisie en accreditatie. Leraren
Apps Script kan bijvoorbeeld iedere ochtend controleren of de relevante KNLTB-pagina gewijzigd is. Bij een wijziging:
🔔 Nieuwe KNLTB-update
De informatie over bijscholing/intervisie is gewijzigd.
Bekijk de nieuwe informatie.
Dat verschijnt dan in MESSAGES.
Ik zou niet automatisch iedere wijziging als nieuwe cursus interpreteren. Eerst detecteren we een wijziging; vervolgens kan de admin beslissen of daar een nieuwe intervisie, cursusmelding of opdracht van wordt gemaakt. Dat voorkomt verkeerde automatische interpretaties.
De officiële informatiepagina blijft bereikbaar via KNLTB Leraren – Vormen van bijscholing.
Per trainer/intervisie kunnen we vervolgens aanbieden:
PDF · DOCX · TXT · CSV · JSON · WhatsApp
De WhatsApp-uitvoer kan bijvoorbeeld automatisch bevatten:
Padel Intervisie
Mentale vaardigheden
Samenvatting: …
Conclusie: …
Persoonlijk leerdoel: …
Vervolg: …
https://sites.google.com/view/intervisie
En daarnaast een afzonderlijke knop:
📨 Verstuur intervisie naar KNLTB
waarbij vóór verzending nog een bevestigingsscherm verschijnt. De geadresseerde is dan padelleraren@knltb.nl, het contactadres dat de KNLTB zelf voor padelleraren vermeldt
Je kunt als padelleraar PO-punten verdienen voor je KNLTB-licentie
door deel te nemen aan of zelf een intervisie te organiseren.
Wat is een intervisie bij de KNLTB?
Lees:
https://leraren.centrecourt.nl/alles-voor-leraren/ontwikkeling/vormen-van-bijscholing/
https://academy.knltb.nl/local/knltbcatalogue/search.php
Een intervisie is een gestructureerd overleg met een kleine groep collega-padelleraren (minimaal 4 deelnemers) waarin het leren van en met elkaar en het verbeteren van je eigen lespraktijk centraal staan.
Kenmerk Details Doel
Ervaringen uitwisselen, praktijkleermomenten bespreken en je vakbekwaamheid op peil houden.
Punten (PO)
1 uur actieve intervisie staat gelijk aan 1 PO-punt voor je licentie.
Organisatie
Je kunt aansluiten bij door de KNLTB georganiseerde regionale sessies (zoals de KNLTB Intervisie forums) of zelf een intervisiegroep starten met leraren uit je buurt.
Accreditatie
Voor een zelfgeorganiseerde intervisie of een intern natraject dien je vooraf accreditatie aan te vragen bij de bond.
Hoe meld je je aan of vraag je het aan?
Aanmelden: Beschikbare intervisies, bijscholingen en forums vind je in de KNLTB Academy of via de KNLTB Leraren App.
Contact & Vragen: Voor overleg over accreditatie of eigen plannen kun je mailen naar padelleraren@knltb.n
tervisies daar deelnemers uit kiezen.
Ik zou per persoon minimaal opslaan: naam, e-mail, mobiel, KNLTB-nummer, organisatie/padelschool, interne/externe trainer, actief, vaste rol(len), mogelijke intervisierol, notities/details, WhatsApp-nummer en eventueel adres/plaats. Een externe trainer moet ook zonder account toegevoegd kunnen worden. Zodra later iemand met hetzelfde geverifieerde e-mailadres of mobiele nummer registreert, kunnen we die persoon koppelen aan het bestaande trainerprofiel in plaats van een dubbel profiel te maken.
Voor jou als SUPERADMIN komt er vervolgens Beheer → Trainers & personen: bestaande
a - b - c - /testtrainers openen, bewerken, aanvullen of deactiveren; nieuwe trainer toevoegen; één of meerdere externe deelnemers toevoegen; vaste rollen instellen; en personen direct aan een team of intervisie koppelen. In het scherm op je screenshot worden Spreker, Docent/intervisieleider, Hoofdtrainer(s) en Aangemelde deelnemers dan allemaal vanuit diezelfde centrale personenlijst gevuld.
Daarnaast wil ik onderscheid maken tussen persoon en deelname. Bijvoorbeeld Rutger kan als persoon vaste rol Trainer hebben, maar tijdens Intervisie A intervisieleider zijn en tijdens Intervisie B deelnemer. Daarmee voorkomen we dat het veranderen van zijn rol bij één bijeenkomst zijn algemene profiel verandert.
Voor externe personen kunnen we ook een bereikbaarheidstatus tonen: Account gekoppeld, E-mail bekend, WhatsApp/mobiel bekend of alleen extern contact. Vanuit een intervisie kunnen vervolgens TXT/CSV/PDF/DOC/WhatsApp-exports worden gemaakt met deelnemers, rollen, bijeenkomstgegevens en relevante notities. Persoonlijke/private beheernotities moeten daarbij standaard niet in exports terechtkomen.
Ik zou dit nu als één samenhangende uitbreiding maken, zonder Code.gs-login te beschadigen:
Trainers.gs 🔄 VERVANGEN — uitgebreid personenmodel, CRUD, externe trainers, rollen en accountkoppeling.
Index.html 🔄 VERVANGEN — SUPERADMIN Personenbeheer + toevoegen/bewerken vanuit je huidige intervisiescherm.
Reports.gs 🔄 VERVANGEN — deelnemers-/contactexport TXT, CSV, PDF, DOC en WhatsApp.
Eventueel een TrainerAdmin.gs ➕ NIEUW als we de beheercode bewust uit Trainers.gs willen houden; dat heeft mijn voorkeur omdat je modulaire structuur dan overzichtelijk blijft.
En ik lever ze volgens onze nieuwe conventie, bijvoorbeeld:
TrainerAdmin_NIEUW_v1_0_2026-10-04_HHMM_XXX-regels.gs.txt
met bovenin én bij de download versie, datum, tijd, werkelijk aantal regels, NIEUW/VERVANGEN en welke functie je eventueel moet uitvoeren.