2026

Sep

25

Av Rolf

Tänk om FileMaker hade kunnat meddela ett annat system om en post ändras? Tänk om FileMaker automatiskt startade ett script när en post ändras? Tänk om det redan finns? Claris har faktiskt redan smygit in en sådan funktion! Mycket av det vi gör handlar om att automatisera olika rutiner. Denna nya funktion gör det enklare.

Det finns sedan länge script-triggers som t.ex. kan starta ett script när användaren ändrar ett fält i en post. En sådan trigger förutsätter att fältet finns på en layout och att det ändras av en användare. Samt endast på en post åt gången.

Fält kan ändras och poster läggas till på så många fler sätt. Data kan importeras, poster skapas från webbformulär eller påverka flera poster på en gång med t.ex. script eller kommandot Ersätt fältinnehåll. För dessa utförs inga script-triggers.

Claris har istället gjort en funktion i FileMaker Server som skickar en s.k. webhook med ett meddelande när något fält i en post ändras, utan någon script-trigger och utan att du gör något script i FileMaker Pro alls. För att använda funktionen behöver du istället lägga till information om webhooks i FileMaker Server, vad som ska trigga webhooken, när den ska utföras, vilken information den ska innehålla och till vilken mottagare den ska skickas. Alla inställningar för webhooks gör du med OData-API:et.

Det finns dokumentation på Claris webbsajt som du kan läsa.

Funktionen infördes så smått i version 22 och är vidareutvecklad i version 26. Ryktet säger att funktionen togs fram för överföring av data mellan Claris Studio och FileMaker.

Exempel på vad du kan använda funktionen till:

  • Meddela annat system att en post skapats, t.ex. en faktura som ska föras över till annat system
  • Starta ett flöde i något flödesprogram som t.ex. Make, Claris Connect, n8n eller något annat populärt flödesprogram. Det kan finnas begränsningar.
  • Starta ett FileMaker-script när en post ändras, istället för att t.ex. köra scriptet schemalagt på servern varje timme
  • Synkronisera en tabell i FileMaker med annan databas/system

Förutsättningar du behöver:

  • FileMaker Server, gärna senaste versionen (26) men 22.0.4 kan fungera.
  • OData påslaget på servern
  • En databas publicerad på servern
  • En behörighetsuppsättning i databasen med OData påslaget. En rekommendation är att göra en behörighetsuppsättning för OData för varje användningsområde med endast nödvändig behörighet
  • en tabell du vill bevaka
  • eventuella fält du vill skicka tillsammans med en webhook
  • om du vill uppdatera FileMaker-databasen med eventuella resultat måste den vara åtkomlig från det ställe/program du skickar webhooks till.

För att starta funktionen behöver du skapa webhooks i FileMaker Server. Det gör du genom att skicka Odata-kommandon till FileMaker Server. Ett enkelt sätt är att använda FileMaker Pro och script-steget Infoga från URL för att skapa dem.

En webhook bevakar ändringar i en tabell. En webhook utförs varje gång en post i en bevakad tabell ändras, skapas eller raderas. Om du gör många ändringar på en gång i flera poster i samma tabell kommer alla dessa poster skickas tillsammans i en webhook. Gör du många ändringar i flera tabeller köas anropen till respektive webhook i FileMaker Server och skickas i tur och ordning. Det betyder att det kan dröja något innan mottagaren kan ta emot en webhook, men den kommer fram. Att tänka på är att även när du raderar en post skickas en webhook.

Claris använder olika http-metoder för att skicka en webhook. Det följer OData-mönstret men känns ibland inte rätt. Om det är en ny post används POST, ändring i en befintlig post PATCH och när en post raderas används DELETE.

Hjälp-databas

Jag har gjort en enkel hjälp-databas med 2 tabeller för att själv kunna skapa webhooks.

I databasen finns en tabell för server-inställningar (webbadress, databas, konto, lösenord mm) och en tabell för webhooks. Flera webhooks kan behövas till samma tabell som utförs beroende på ett s.k. filter du anger, t.ex. en webhook som utförs om ett fält är ifyllt och en annan om samma fält är tomt. Databasen är också ett sätt att utveckla, ändra och förfina dina webhooks samt dokumentera dem. Databasen kan också användas för att se eventuella fel som inträffar. Det finns knappar för att skapa en webhook, för att radera den och för att hämta senaste informationen om den.

Databasen kan du ladda ner här: ODataWebhooks.fmp12. OBS! Hjälp-databasen är anpassad till FileMaker Server 26 och används på egen risk.

Ange inställningar för din server och databas i Settings och olika webhooks i tabellen Webhooks. Se databasen som en utgångspunkt som du själv ändrar efter dina behov och önskemål.

Exempel: Kalender från FileMaker till Google Calendar

Som exempel på hur webhooks fungerar har jag valt att göra en enkel databas med FileMakers inbyggda kalender. Databasen innehåller inget annat, jag har bara dragit in tillägget Kalender på en tom layout, då skapas automatiskt några tabeller och en web-visare med kalendern.

Tanken med exemplet är att när jag skapar en händelse i kalendern i FileMaker ska händelsen även skapas i Google Calendar (som jag själv använder dagligen). Om jag ändrar händelsen i FileMaker, t.ex. flyttar till en annan dag/tid eller ändrar rubriken, ska händelsen i Google Calendar uppdateras.

Jag behöver två webhooks i exemplet, en som används för händelseposter som är nya och en för poster som ska ändras. När du gör en ny händelse i FileMaker (en post skapas) ska först en händelse i Google Calendar skapas, sedan ska FileMaker-databasen uppdateras med Google Calendars eget händelse-id som senare ska användas för att uppdatera händelsen.

För exemplet använder jag ett flödesprogram som heter n8n, vi har det installerat på en egen server och är lätt åtkomligt. I n8n ritar jag flöden med en eller flera steg/boxar, ett flöde startas med en trigger. I det här fallet är triggern en webhook som automatiskt skickas från FileMaker Server när en post skapas (eller ändras).

I hjälp-databasen anger jag webbadressen, som är den trigger som ska starta mitt n8n-flöde. I det här fallet är webbadressen (som jag anger i fältet "webhook"):

https://N8N-SERVER/webhook/gcal-create-event

Jag vill att värden i alla fält ska skickas till flödet när posten skapas. Fältnamnen skrivs in med kommatecken mellan i fältet "select". I fältet "filter" anger jag när denna webhook ska utföras, i det här fallet när fältet "GoogleEventID" är tomt. Tabellen där kalender-posterna skapas heter "FCCalendarSampleEvents" som jag anger i fältet "tableName".

I hjälp-databasen finns tre knappar:

  • Create. Skapar aktuell webhook i FileMaker Server. Klickar du på knappen 2 gånger skapas 2 webhooks med samma värden (gör inte det).
  • Delete. Tar bort aktuell webhook i FileMaker Server. Det går inte att uppdatera en webhook, så du får klicka på Delete, ändra din webhook och klicka på Create igen.
  • Get. Hämtar all information om en webhook. De övriga fälten i layouten fylls i, fältet "pendingOptions" är av extra intresse. Där visas en eventuell kö och eventuella felmeddelanden.

Det finns också ett fält "maxFailedAttempts". Om det blir fel försöker FileMaker Server på nytt i oändlighet om du inte skriver in ett max antal försök i fältet, t.ex. 10. Enda sättet att stoppa en webhook som genererar fel är att radera den.

Det finns fördefinierade "appar" i n8n, Google Calendar är en av dem. Innan jag kan använda den behöver jag skapa ett projekt i Googles utvecklar-miljö för mitt Google-konto, tillåta API för kalender samt göra en app i projektet för att få de API-nycklar som ska anges i n8n-"appen". FileMaker är en annan n8n-"app", även i den behöver jag ange servernamn, databas, konto och lösenord.

I n8n gör jag ytterligare ett steg i flödet som sparar resultatet från Google Calendar i fältet "GoogleEventID" på posten i FileMaker som startade flödet. Det gör att jag kan uppdatera händelsen senare.

För poster som ändras, dvs. datum, tid eller rubrik ändras, behövs ytterligare en webhook med en annan trigger-adress. Denna gång använder jag webbadressen:

https://N8N-SERVER/webhook/gcal-update-event

Även nu skickas alla fält med till n8n, men filtret skiljer sig. Endast poster som har ett "GoogleEventID" ska skickas till denna webhook. I n8n uppdateras Google Calendar-eventet som nästa steg i flödet.

Mitt n8n-projekt ser ut så här:

Hur fungerar det då i praktiken? Det är många steg som ska utföras och vår n8n-server är inte den snabbaste. Jag har gjort en liten film, tiden det tar att skapa/flytta händelser i Google Calendar är den verkliga tiden (filmen är inte klippt!).

I filmen visas FileMaker-fönstret till vänster och en webbläsare med Google Calendar till höger.

Exemplet är långt ifrån fullständigt! Flödet tar t.ex. inte hand om flera poster som skickas samtidigt och händelser kan inte tas bort i Google Calendar m.m. Ett fullständigt exempel ska också kunna ta emot triggers från Google Calendar, dvs. när du ändrar något i Google Calendar ska FileMaker uppdateras, men det är en helt annan historia.

Skriv en kommentar

Din epost-adress stannar hos oss.
Webbsajten använder FileMaker som CMS.