Coda en de berekening van je leeftijd

Coda en je leeftijd

Christiaan Huizer
5 min readJul 21, 2020

--

Hoe weet je in Coda hoe oud iemand is? De vraag is eenvoudiger dan het antwoord. Dit is een artikel voor gevorderden en veronderstelt actieve kennis van datumfuncties en van het ‘ifje’.

De leeftijd in jaren

Onderstaande is de formule die wordt aangeboden op het forum van Coda. Deze formule zegt dat je het jaar van deze dag “Today().Year()” in mindering brengt op het ingegeven jaar “thisRow.Birthday.Year()” en dat je hier het getal één vanaf trekt vanaf dat je verjaardag na vandaag valt. En dit werkt. Probeer het zelf maar. Je kunt de logica ook omdraaien en een jaar bijtellen indien je verjaardag al gepasseerd is. Op het forum staat onderstaande versie:

Today().Year() - thisRow.Birthday.Year() - If(Date(Today().Year(), thisRow.Birthday.Month(), thisRow.Birthday.Day()) > Today(), 1, 0)

Verjaardagen zijn in marketing campagnes belangrijk. Er is dan een aanleiding om een berichtje te sturen al dan niet gekoppeld aan een ‘beloning’ en of uitnodiging. Verjaardagen zijn ook belangrijk in de evenementen sector. je wil weten of je klanten op de dag van het de gebeurtenis bijvoorbeeld 18 jaar zijn of voor kinderen of ze jonger dan 12 jaar zijn. Bovenstaande formule (of een variant als je niet werkt met Today() zijn dan behulpzaam.

Dagen tot aan je verjaardag

In het artikel ‘Coda en Tijdsduur’ ging ik specifiek in op de vraag hoe je de tussentijd uitgedrukt in uren berekent binnen Coda. In de blog over ‘Vandaag & Nu’ ging het ook over kloktijd. In het geval van een verjaardag hebben we vandoen met kalendertijd. De functie Now() speelt in deze vrijwel geen rol, doorgaans volstaat Today() of een andere datum zoals bijvoorbeeld een feestdag of de oprichtingsdatum van een vereniging of bedrijf.

Een geboortedatum bestaat uit drie stukjes

drie elementen van de verjaardag.

Om de dagen tot de volgende verjaardag te vinden, dienen de dag en de maand gelijk te blijven, maar dient het jaar dit jaar te zijn of volgend jaar, want alleen dan kunnen we het aantal dagen uitrekenen. In bovenstaand voorbeeld zien we immers dat als je de berekening uitvoert vanaf de geboortedatum, je alle tussenliggende dagen krijgt. De slimmigheid is om Coda te vertellen dat we gaan rekenen met dit jaar (indien de geboortedatum voor ons ligt in de tijd) of met volgend jaar vanaf dat iemand in dit jaar al jarig is geweest. Dit laatst stukje is een kleinigheidje via je een ifje en daarmee vergelijkbaar met hoe je een leeftijd toont, zie hierboven.

Substitute

Je kunt het probleem van ‘dit of volgend’ jaar op een aantal manieren oplossen. Ik kies er voor om het geboortejaar te vervangen door dit jaar en daarvoor gebruik ik:

Substitute(text, searchFor, replacementText)Substitute(thisRow.verjaardag,thisRow.verjaardag.Year().ToText(),Today().Year()).ToDate()

Het vervelende is dat de uitkomst van deze bewerking juist is, maar onjuist oogt. Dat komt door de US format die overal in Coda aangehouden wordt. Om de leesbaarheid te verbeteren dien je de kolom als datum te formatteren en te kiezen voor de weergave die bij je past. Los van de weergave, de formule klopt en we brengen ‘vandaag’ in verband met de verjaardag dit jaar. Dat ziet er dan zo uit:

dagen tot of vanaf verjaardag

Dit is slechts een deel van de oplossing vanaf dat je een marketing actie wil opzetten voor iemand die jarig is in januari. Je wil die bijvoorbeeld 2 maanden voor de verjaardag al eens een email sturen. Met bovenstaande logica kom je er niet want ze is gebaseerd op een kalenderjaar en daarmee vertelt de software je op 31 december dat de verjaardag van iemand op 1 jan 364 dagen geleden is. De oplossing ligt voor de hand. Eens de verjaardag voorbij is, dan tellen we er een jaartje bij. Dit is het ifje waarover we eerder spraken.

Ifje en volgende verjaardag

Net als bij leeftijden geldt ook hier dat het er toe doet of je nog jarig moet worden dan al jarig bent geweest (in dit kalenderjaar). Een ifje biedt uitkomst:

If(Substitute(thisRow.verjaardag,thisRow.verjaardag.Year().ToText(),Today().Year()).ToDate() > Today(),Substitute(thisRow.verjaardag,thisRow.verjaardag.Year().ToText(),Today().Year()).ToDate(),Substitute(thisRow.verjaardag,thisRow.verjaardag.Year().ToText(),Today().Year()+1).ToDate() )

De twee bijzonderheden staan in het vet en zouden voor zichzelf moeten spreken. Na de komma staat de er de gewone substitutie en bij het alternatief (dus als niet voldaan wordt aan de voorwaarde) “ > Today() “, en hier voeg ik een jaar toe via de “ + 1 “.

Het resultaat ziet er dan zo uit.

dagen tot aan je verjaardag

Eén verjaardag valt vandaag en dan zijn er volgens bovenstaande logica nog 365 dagen te gaan. Je zou er ook voor kunnen kiezen om dit (uitzonderlijke) geval een andere waarde dan een getal te tonen, bijvoorbeeld : ‘is jarig vandaag’. Dat is dan de kers op de taart, zie hieronder.

If(If(Substitute(thisRow.verjaardag,thisRow.verjaardag.Year().ToText(),Today().Year()).ToDate() > Today(),Substitute(thisRow.verjaardag,thisRow.verjaardag.Year().ToText(),Today().Year()).ToDate(),Substitute(thisRow.verjaardag,thisRow.verjaardag.Year().ToText(),Today().Year()+1).ToDate() )-Today()="365",'is jarig vandaag',If(Substitute(thisRow.verjaardag,thisRow.verjaardag.Year().ToText(),Today().Year()).ToDate() > Today(),Substitute(thisRow.verjaardag,thisRow.verjaardag.Year().ToText(),Today().Year()).ToDate(),Substitute(thisRow.verjaardag,thisRow.verjaardag.Year().ToText(),Today().Year()+1).ToDate() ))

Eens je deze logica hebt, kan het echte leuke gedeelte beginnen met automatisaties.

Is niet meer

Het komt voor dat klanten overlijden. Om te voorkomen dat er nog berichtjes naar de overledene gestuurd worden, is het zaak iets te voorzien om dit te voorkomen. Dat kan op verschillende manieren. Er kan een check box komen en eens deze aangevinkt is, wordt de persoon als overleden beschouwd. Een datum van overlijden invoeren, is een andere en mijns inziens ook een betere mogelijkheid. Zolang dit datumveld open is, kan er gecommuniceerd worden, anders niet. Een datum van overlijden is in voorkomende gevallen belangrijk voor een terugbetaling, in dit geval aan de nabestaanden. Er dient dan bijvoorbeeld voor een periode van “n” dagen een herberekening gemaakt te worden. Je hebt dan behoefte aan een formule die de dagen berekent vanaf het overlijden. Dat is dan een variant op ‘dagen tot aan je verjaardag’.

Conclusie

Werken met dagen in Coda is verwarrend vanwege de dominante Amerikaanse datum notatie, echter het werkt prima en je kan deze logica gebruiken als basis voor je automatisatie. De slimheid om te komen tot een juiste leeftijd en om te komen tot ‘dagen tot aan verjaardag’ is gebaseerd op logica dat een verjaardag dit kalenderjaar al gepasseerd is of nog moet komen. Eens je dit door hebt kun je automatisaties bouwen om klanten op automatische basis een e-mailtje of een sms te sturen.

Mijn naam is Christiaan Huizer en ik ben eigenaar van Huizer Automatisatie. In mijn rol als bedrijfsadviseur ben ik actief in het midden- en kleinbedrijf in Wallonië, Brussel, Vlaanderen en Nederland. Mijn klanten vragen me vooral om hun bedrijf voordelig te vereenvoudigen en versnellen. Ik maak daarbij gebruik van tools als AirTable, Coda, Zapier, MailJet en TypeForm.

Huizer Automatisatie over het gebruik van Coda om je leeftijd te tonen en het aantal dagen tot je verjaardag

--

--

Christiaan Huizer
Christiaan Huizer

Written by Christiaan Huizer

I write about how to Coda . You find blogs for beginners and experienced makers. I publish about 1 / week. Welcome!

No responses yet