# 12 programmeerprojecten ideeën uit je eigen spreadsheet

URL: https://formula.dog/nl/journal/programmeerprojecten-ideeen-spreadsheet
Type: blog
Locale: nl
Published: 2026-10-24
Updated: 2026-10-26

---

> Twaalf programmeerprojecten ideeën die beginnen bij het spreadsheet dat je al gebruikt: herinneringen, trackers en opschoning, met de juiste taal voor Sheets of Excel.

Op zoek naar programmeerprojecten ideeën die je ook echt afmaakt? Begin bij het spreadsheet dat je elke ochtend al open hebt. Een tracker die je een mail stuurt, een blad dat zichzelf opruimt, een dashboard dat zichzelf vernieuwt: dit zijn echte programmeerprojecten, en de data staat er al. Hieronder vind je twaalf ideeën die ik zelf heb gebouwd of collega's heb zien bouwen, van "één middag" tot "één weekend".

## Waarom je eigen spreadsheet beter werkt dan een takenlijst-app

De meeste lijsten met programmeerprojecten geven je dezelfde vijf dingen: een takenlijst-app, een rekenmachine, een weerwidget. Ze zijn prima. Ze zijn ook saai, want niemand heeft het resultaat echt nodig.

Een spreadsheetproject begint met een echte ergernis. Elke vrijdag kopieer je dezelfde cijfers in dezelfde kolommen. Goedkeuringen jaag je handmatig na. Elke maand bouw je hetzelfde rapport opnieuw. Als de ergernis echt is, maak je het project af, want jij bent de eerste gebruiker.

Er is een tweede reden. Een spreadsheet geeft je een gratis front-end, een gratis database en een gratis manier om te delen. Je slaat de opzet over die de meeste beginnersprojecten de nek omdraait, en je gaat meteen naar de logica.

## Welke taal bij welk spreadsheetproject?

Kies de tool op basis van waar het bestand staat, niet op basis van wat hip is.

- 
**Google Spreadsheets:** Google Apps Script (JavaScript). Goed voor mails, menu's, triggers en formulieren.

- 
**Excel 365:** Office Scripts of Python in Excel. Goed voor opschonen, statistiek en grafieken.

- 
**Oudere desktop-Excel (2016, 2019):** VBA. Goed voor macro's op bestanden die de laptop nooit verlaten.

- 
**Allebei:** formules met LAMBDA en benoemde functies. Goed voor herbruikbare logica zonder scripting.

Let op de versies: Python in Excel en LAMBDA vereisen Excel 365. Apps Script werkt alleen in Spreadsheets. VBA werkt alleen in desktop-Excel. Zit je op een afgeschermde werklaptop, controleer dit dan voordat je verliefd wordt op een idee.

Heb je nog nooit gecodeerd, begin dan met Apps Script. Het is JavaScript met een zachte instap: open Extensions, dan Apps Script, en je zit in een editor die aan je blad vastzit.

![Handen typen op een toetsenbord terwijl een spreadsheet en een scriptzijbalk oplichten op het scherm](https://fdzlnqpwsaniezitwiuw.supabase.co/storage/v1/object/public/cms-media/formula-dog/2026-10/ac6b8f-img1.webp)

## Beginnersprojecten (elk één middag)

Deze vragen ongeveer 20 tot 60 regels code. Ik zou ze in deze volgorde doen.

**1. Een eigen menu dat een opschoning uitvoert.** Schrijf een functie die spaties weghaalt, hoofdletters corrigeert en lege rijen verwijdert. Voeg hem daarna toe aan een menu met `onOpen`. Zo leer je functies, bereiken en het menu-systeem in één keer. Het is ook het eerste script dat mensen echt bewaren.

**2. Een maandelijks overzichtsblad.** Lees waarden uit een tabblad met ruwe data, tel ze per categorie op en schrijf het resultaat naar een tweede tabblad. Dit is SUMIF met een paar extra stappen, en dat is het punt: je ziet precies wat je formules voor je deden. Sla dit over als je al in draaitabellen leeft; de les zit in de lus, niet in het resultaat.

**3. Een herinnering voor verjaardagen of verlengingen.** Houd een lijst met datums bij in een blad en laat een dagelijkse trigger je mailen wanneer er een over een week is. Apps Script-triggers zijn voor de meeste mensen het "aha"-moment. Er draait iets terwijl jij slaapt.

**4. Een controle op datavalidatie.** Scan een kolom en markeer elke rij die je regels breekt: een slecht mailadres, een negatieve prijs, een ontbrekend ID. Je schrijft dan je eerste reguliere expressie, en je haat die een beetje, wat normaal is.

Zo ziet het eruit in een echt script. Dit is de eenvoudigste herinnering die ik ken, klaar om in de Apps Script-editor te plakken.

`function sendReminders() {
  const rows = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
  rows.slice(1).forEach(([name, date]) => {
    const days = (new Date(date) - new Date()) / 86400000;
    if (days > 0 && days <= 7) {
      MailApp.sendEmail("you@example.com", "Binnenkort: " + name, "Vervalt op " + date);
    }
  });
}`Argument voor argument: `getValues()` geeft elke rij terug als array, `slice(1)` slaat de kopregel over, en `MailApp.sendEmail(aan, onderwerp, bericht)` verstuurt de mail. Koppel er een trigger op die op een vast tijdstip draait, dan loopt hij elke ochtend. Consumentenaccounts zijn beperkt tot 100 ontvangers per dag, en één run stopt na 6 minuten, volgens de [quotapagina van Apps Script](https://developers.google.com/apps-script/guides/services/quotas). Meer dan genoeg voor een persoonlijke herinnering, niet voor een nieuwsbrief.

## Middelgrote programmeerprojecten (één weekend)

Hier begin je je blad te koppelen aan de buitenwereld.

**5. Een uitgavenregistratie gevoed door een formulier.** Een Google Form schrijft in een blad, een script categoriseert elke invoer, en een overzichtstabblad toont de uitgaven per maand. Het formulier doet het vervelende invoerwerk, zodat jij je op de regels kunt richten.

**6. Een prijs- of voorraadvolger.** Haal een getal van een openbare pagina of API op met `UrlFetchApp`, log het elk uur met een tijdstempel en teken de geschiedenis in een grafiek. Ik heb ooit zo de vliegprijzen voor een reis bijgehouden. Helaas was de les dat de prijs stijgt op de dag dat je besluit te kopen.

**7. Een goedkeuringsworkflow.** Een rij krijgt de status "In behandeling", de goedkeurder krijgt een mail met twee links, en de klik past het blad aan. Het voelt als het bouwen van een klein SaaS-product. Het is ook het project waar mensen op het werk het vaakst om vragen.

**8. Een wekelijkse samenvatting van het blad naar Slack.** Elke maandag post je de vijf meest verlopen items in een kanaal. Een webhook is één HTTP-aanroep. Wil je die aanroep liever niet zelf schrijven, dan regelt een no-code-connector de techniek terwijl jij de logica schrijft.

![Plaknotities en een tablet met een dashboard op een houten bureau, waar spreadsheetprojecten worden gepland](https://fdzlnqpwsaniezitwiuw.supabase.co/storage/v1/object/public/cms-media/formula-dog/2026-10/3d3562-img2.webp)

## Geavanceerde programmeerprojecten voor wie het blad ontgroeit

Zodra het blad klein aanvoelt, houd je het als interface en haal je het zware werk eruit.

**9. Python in Excel voor een opschoonpijplijn.** Ontdubbel 200.000 rijen, koppel bedrijfsnamen met fuzzy matching en markeer uitschieters met een paar regels pandas. De [Python in Excel-documentatie van Microsoft](https://support.microsoft.com/en-us/office/get-started-with-python-in-excel-a33fbcbe-065b-41d3-82cf-23d05397f53d) beschrijft de installatie. Alleen Excel 365, en je formules blijven de baas over het raster.

**10. Een afstemmingsscript.** Vergelijk twee exports (bank tegenover grootboek, bestellingen tegenover facturen) en zet op een lijst wat maar aan één kant voorkomt. Accountants en operationele teams doen dit elke maand, dus zelfs een ruwe versie bespaart uren. Begin met exacte overeenkomsten en voeg daarna tolerantieregels toe voor bedragen en datums.

**11. Een persoonlijke API bovenop een blad.** Publiceer het blad als kleine webapp met `doGet`, geef JSON terug en laat een andere tool het lezen. Goedkoop, een beetje hacky, en een prima manier om te begrijpen wat een API is.

**12. Een herbruikbare LAMBDA-bibliotheek.** Helemaal geen scripting, maar het telt. Verpak je vijf favoriete formulepatronen in benoemde functies, zodat de logica op één plek staat. Biscuit zou dit "het bot begraven op een plek waar je het weer vindt" noemen.

## De drie fouten die je eerste weekend opslokken

Elk spreadsheetscript breekt op dezelfde paar plekken. Als je die kent, bespaar je uren.

**Autorisatievragen.** De eerste keer dat een script een mail verstuurt of een ander bestand aanraakt, vraagt Google om toestemming. Mensen klikken het weg, het script faalt stilletjes, en ze denken dat de code fout is. Voer de functie één keer handmatig uit vanuit de editor en accepteer het dialoogvenster.

**Datums die geen datums zijn.** Een cel die eruitziet als datum kan tekst zijn, waardoor het script een tekst met een getal vergelijkt. Controleer het met `typeof` of verpak de waarde in `new Date()`. In Excel zie je dezelfde valkuil terug: een datum die als tekst is opgeslagen en weigert te sorteren.

**Te traag worden.** Een lus die één cel per keer leest of schrijft is traag, omdat elke aanroep terug naar de server gaat. Lees het hele bereik één keer met `getValues()`, werk op de array en schrijf hem één keer terug met `setValues()`. Een script dat vier minuten duurde, zakt vaak naar een paar seconden. Dat is de grootste snelheidswinst in Apps Script, en niemand noemt die in de beginnerstutorials.

Als er iets breekt, voeg je `console.log()`-regels toe, open je het paneel Uitvoeringen en lees je de echte fout. Het bericht is meestal behulpzamer dan het eruitziet.

## Een realistische eerste week

Wil je een plan in plaats van een lijst, dan is dit het plan dat ik aan collega's geef. Dag één: kies de ergernis en schrijf het gewenste resultaat in één zin. Dag twee: doe de taak één keer met de hand, langzaam, en noteer elke stap. Dag drie: maak van die stappen een functie die de data leest en het resultaat in het logboek afdrukt. Dag vier: schrijf de uitkomst terug naar het blad. Dag vijf: voeg een trigger of een menu-item toe en laat het aan één persoon zien. Niemand krijgt een medaille voor een perfect script. Een ruw script dat elke ochtend draait, wint het van een gepolijst script dat in een map "later" blijft staan.

## En AI? Gebruik het, maar lees wat het schrijft

AI-codeassistenten zijn goed in dit soort werk, omdat spreadsheetscripts kort zijn en het doel makkelijk te beschrijven is. Zeg hoe de kolommen heten, wat er moet gebeuren en hoe de uitvoer eruit moet zien. Dan krijg je in seconden een eerste versie.

Twee regels die ik volg. Ten eerste: draai het op een kopie van het blad, nooit op het origineel. Scripts kunnen een kolom sneller overschrijven dan je "ongedaan maken" kunt zeggen. Ten tweede: vraag de assistent elke regel uit te leggen en verander daarna zelf één waarde. Kun je niet voorspellen wat er gebeurt, dan bezit je de code nog niet.

![Golden retriever die tussen twee open laptops zit en naar het scherm kijkt](https://fdzlnqpwsaniezitwiuw.supabase.co/storage/v1/object/public/cms-media/formula-dog/2026-10/a62f75-img3.webp)

Een goede prompt ziet er zo uit: "Kolom A bevat namen, kolom B bevat vervaldata. Mail me elke dag een lijst van alles wat binnen de komende 7 dagen vervalt." Die is precies over invoer, uitvoer en timing. Vage prompts als "automatiseer mijn blad" geven vage code, en vage code is waar de stille fouten wonen. Als de eerste versie faalt, plak dan de exacte foutmelding terug en vraag om een oplossing, in plaats van de prompt helemaal opnieuw te schrijven.

Voor gewone formules heb je geen script nodig. Beschrijf het probleem en krijg de formule, met een notitie of die in Excel, in Spreadsheets of in beide werkt.

## Hoe kies je het project dat je afmaakt

Kies het project met de kleinste eerste versie. "Mail me als een datum nadert" verslaat "een volledige CRM". Lever de lelijke versie op, gebruik hem twee weken en verbeter daarna het deel dat je stoort. Schrijf op wat er misging, want de lijst met ergernissen wordt je volgende drie projecten. De meeste scripts die ik nu nog gebruik begonnen als een hack van vier regels waar ik me een beetje voor schaamde om die aan iemand te laten zien.

Drie filters helpen:

- 
**Raak je het bestand wekelijks aan?** Zo niet, dan voel je het voordeel niet en laat je het vallen.

- 
**Past versie één op één tabblad?** Zo niet, snoei dan in de scope.

- 
**Gaat iemand anders het gebruiken?** Een collega die vraagt "kun je er een kolom bij zetten?" is de beste motivatie die je kunt krijgen.

Wil je een plek om veilig dingen te bouwen en te breken, dan helpt een cloud-sandbox bij de tussenliggende projecten die het blad verlaten.

## Waar ik maandag zou beginnen

Mijn keuze: project 3, de herinnering. Het is kort, het gebruikt triggers, en het resultaat landt in je inbox, dus merk je meteen dat het werkt. Voeg daarna project 1 toe, zodat de opschoning één klik verwijderd is. Aan het eind van de maand heb je twee scripts die je vertrouwt en een helder idee van wat je daarna bouwt.

Sla de takenlijst-app over. Je spreadsheet heeft al een beter idee in zich.

## FAQ

### Welke programmeerprojecten ideeën zijn goed voor beginners?

Begin klein en nuttig: een eigen menu dat data opschoont, een maandelijks overzichtsblad, een mail-herinnering voor datums of een controle op datavalidatie. Elk project kost een middag en leert je werken met bereiken, lussen en triggers.

### Kan ik programmeren leren met Google Spreadsheets?

Ja. Google Apps Script is JavaScript dat aan je blad vastzit. Open Extensions, dan Apps Script, en je kunt cellen lezen, mails versturen en op een schema laten draaien zonder extra installatie.

### Is Python in Excel geschikt voor programmeerprojecten?

Ja, voor grote datasets, fuzzy matching en statistiek. Het vereist Excel 365, dus het werkt niet in Excel 2016 of 2019. Oudere versies kunnen VBA gebruiken.

### Hoe lang mag een eerste programmeerproject duren?

Eén middag voor de eerste versie. Heeft je idee meer nodig dan één tabblad en ongeveer 60 regels code, snoei het dan en lever eerst de kleinere versie op.

### Moet ik AI gebruiken om mijn spreadsheetscripts te schrijven?

Als eerste concept wel. Test op een kopie van het bestand, laat de assistent elke regel uitleggen en verander zelf één waarde, zodat je begrijpt wat de code doet.

### Hoe kies ik welk programmeerproject ik ga afmaken?

Kies het project met de kleinste eerste versie dat je wekelijks gebruikt. Vraag jezelf af of je het bestand wekelijks aanraakt, of de versie op één tabblad past en of iemand anders er baat bij heeft.