4 van 4 | Verwijderen van gegevens
Eens de gegevens uit een PaperForm beland zijn in Coda is het zaak — in ons voorbeeld — om ze na twee weken ook weer te verwijderen. We willen dat dit verwijderen automatisch gebeurt. Hier maken we gebruik van een interne Coda automatisatie.
Beperkingen in Coda
Over automatisaties schreven we reeds in een vorig artikel. De eerste stap is aan Coda vertellen waar er iets dient te gebeuren. De tweede stap is te vertellen wat er dient te gebeuren, in ons geval de verwijdering van gegevens. De derde stap is dan de voorwaarde waaronder (IF), in dit geval na twee weken.
Als het om een logica gaat, verbonden met tijd, dan kent Coda haar beperkingen. We herinneren ons deze opmerking:
I haven’t yet gotten to the bottom of it, but I believe that automation will fail when
a) it tries to read a “volatile” value (a result of
Now()
,Today()
, orUser()
, which is calculated in a browser but not on Coda backend)
b) it tries to read a value that has pending edits to it (e.g. when you edit a cell and then try to use its value in the same automation run)
Een mogelijke oplossing
Om er toch voor te zorgen dat gegevens verwijderd worden eens ze twee weken oud zijn, dienen we te werken met een functie gebaseerd op iets van tijd. We doen dat een aantal stappen. Eerst testen we een opzetje rond een button.
We beginnen met een test tabel waarin we er voor zorgen dat een checkbox wordt aangevinkt vanaf dat het heden groter is dan de waarde bij ‘time’. Daarvoor maak ik gebruik van twee functies. De kolom met de checkbox voorzie ik van onderstaande, en zodra dit ‘waar’ is, dan krijg je een vinkje.
thisRow.Time<Now()
En de kolom ‘time’’ laat ik vollopen met elke keer twee minuten na ‘nu’ . Dat voorkomt dat ik zelf iets moet intypen tijdens het testen.
Dit is de formule bij ‘value for new rows’:
now()+minutes(2)
Vervolgens wil ik een button en als ik die aanklik of laat aanklikken, dan dienen er rijen verwijderd te worden.
Dan over de button zelf. Hieronder zie je dat als er geen rijen zijn OF als de checkbox leeg is, de button op inactief staat. Dat komt doordat we werken met voorwaarden binnen de button. Vanaf dat er minimaal één checkbox aangevinkt staat wordt de button actief. We gebruiken hiervoor de volgende functie bij ‘disable if’:
[tabel om tijd te testen].Checkbox.ContainsOnly(False) OR [tabel om tijd te testen].Count()=0
Links zie je de logica die we volgen. Bij Action kiezen we voor ‘delete rows’ Dat doen we in de tabel van keuze en via een filter geven we aan dat de button alleen haar werk mag doen (te weten een rij verwijderen) als voldaan is aan de voorwaarde dat er een vinkje staat. De codetaal daarvoor is:
Checkbox=True()
En dat samen met de ‘disable if’ maakt dat we een werkbare button hebben.
We hebben nu dus een button die alleen werkt als er een checkbox staat en die checkbox wordt actief onder specifieke voorwaarden. In de test is dit 2 minuten na ‘nu’. In onze echte tabel kiezen we voor 14 dagen na binnenkomst in de tabel en daarvoor gebruiken we onderstaande: het moment van creatie en we tellen er 14 dagen bij op. Zijn we daar voorbij via tweede stukje, dan een vinkje. Eens het vinkje er staat, kunnen we de button gebruiken.
Created(thisRow)+days(14) | Now()>thisRow.[CD plus 14 days]
Hoe sturen we de button aan?
Via een automatisering die zich baseert op tijd. Echter dan op “Coda Tijd”. Men biedt de gebruiker de keuze uit elk uur, elke dag of specifieke dagen in de week. Ik kies hier voor ‘elk uur’, maar het zou ook één keer per dag mogen zijn, dat is ook goedkoper. We willen in dit voorbeeld dat elk uur de button ingedrukt wordt. We weten dat ze werkt. En daarmee is de kous af.
Dit ziet er dan zo uit:
Hiermee hebben we een werkende oplossing voor ons vraag hoe we rijen verwijderen waar de vooraf ingestelde tijdsduur is gepasseerd. De Coda software zal nu elk uur de pagina vernieuwen. De tijdstippen nemen door de vernieuwing hun meest recente waarde aan via de button worden dan rijen al of niet verwijderd.
Coda heeft via een omweg toch een slimme oplossing voorzien voor ons probleem verbonden met ‘tijd’. Je kunt niet rechtstreeks een actie triggeren die gebaseerd is op een verandering qua datum of tijd, maar wel indirect via ingebouwde automatisaties.
Hiermee zijn we aan het einde van onze reeks van vier gekomen. Ik heb niet alleen aangetoond hoe je een formulier kan maken om bezoekersgegevens op te vangen in Coda, hoe ze aan te passen en hoe ze te verwijderen. Ik toon indirect ook aan dat dit best veel werk is om op te zetten voor één klant. Bestaande oplossingen die 10 Euro per maand vragen, lijken prijzig, maar zijn eens stuk goedkoper dan een oplossing op maat waar je toch een paar uur aan bezig bent. Ook omdat je toch altijd één en ander moet testen. In een volgend artikel ga ik hier dieper op in.
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 PaperForm.