CellAlert

FileMaker-Integration · Beta

CellAlert in FileMaker einbinden

Ein Web-Viewer-Panel macht aus Datumsfeldern in deinen FileMaker-Datensätzen überwachte Fristen — mit Erinnerung per E-Mail & Kalender, auch wenn FileMaker zu ist.

Web-Viewer-Adresse

https://filemaker.cellalert.app
Panel öffnen

Voraussetzung: FileMaker Pro 19+ (Web Viewer mit JavaScript) und ein CellAlert-Konto.

In 4 Schritten eingebunden

  1. 1Auf dem gewünschten Layout (z. B. „Kunden“) einen Web Viewer platzieren.
  2. 2Als „Webadresse“ die berechnete Formel unten einsetzen — sie übergibt den aktuellen Datensatz (Primärschlüssel, Feld, Datum) an CellAlert. Tabellen- und Feldnamen an dein Schema anpassen.
  3. 3Optional ein FileMaker-Script „CellAlert Saved“ anlegen, das die zurückgegebene reminder_id am Datensatz speichert — so bleibt die Verknüpfung erhalten.
  4. 4Im Panel einmal mit deinem CellAlert-Konto anmelden. Fertig — Datum übernehmen = überwachte Frist.

Web-Viewer-Formel

Diese berechnete „Webadresse“ in den Web Viewer eintragen. „Kunden“, „Vertragsende“ und „_pk“ durch deine Tabelle, dein Datumsfeld und deinen Primärschlüssel ersetzen.

"https://filemaker.cellalert.app/?" &
"title="     & GetAsURLEncoded ( Kunden::Name & " — Vertragsende" ) &
"&due="      & GetAsURLEncoded ( Kunden::Vertragsende_ISO ) &   // yyyy-mm-dd
"&file="     & GetAsURLEncoded ( Get ( FileName ) ) &
"&table="    & GetAsURLEncoded ( Get ( LayoutTableName ) ) &
"&recordId=" & GetAsURLEncoded ( Kunden::_pk ) &               // dein Primärschlüssel
"&field=Vertragsende" &
"&solution="  & GetAsURLEncoded ( Einstellungen::SolutionID ) &  // stabile Lösungs-ID
"&callbackScript=CellAlert Saved"

Datum als ISO (yyyy-mm-dd)

CellAlert erwartet das Datum als yyyy-mm-dd. Ist dein Feld anders formatiert, mit dieser Hilfsformel umwandeln und als „due=“ einsetzen.

Year ( Kunden::Vertragsende ) & "-" &
Right ( "0" & Month ( Kunden::Vertragsende ) ; 2 ) & "-" &
Right ( "0" & Day ( Kunden::Vertragsende ) ; 2 )

Stabile Verknüpfung (wichtig)

Damit eine Frist fest mit dem Datensatz verknüpft bleibt — auch wenn die FileMaker-Datei umbenannt oder kopiert wird — gib eine stabile Lösungs-ID mit (Parameter „solution“). Lege dazu ein globales Textfeld „SolutionID“ an und setze es einmalig per Auto-Eingabe/Script auf eine UUID. CellAlert erkennt den Datensatz daran wieder und aktualisiert die bestehende Frist, statt eine zweite anzulegen.

If ( IsEmpty ( Einstellungen::SolutionID ) ;
     Get ( UUID ) ;
     Einstellungen::SolutionID )

Rückmeldung an FileMaker (optional)

Nach dem Speichern ruft CellAlert dein Script „CellAlert Saved“ mit { reminderId, recordId, field } als Script-Parameter auf. Mit Get(ScriptParameter) auswerten und die reminderId am Datensatz ablegen — damit ist die Frist fest mit dem Datensatz verknüpft und wird beim erneuten Öffnen aktualisiert statt doppelt angelegt.

Stufe 2

Automatischer Sync — ohne offenes Panel

Damit sich eine Frist automatisch aktualisiert, wenn jemand das Datum in FileMaker ändert (oder den Datensatz löscht) — auch ohne das Panel zu öffnen — pusht ein FileMaker-Script-Trigger die Änderung direkt an CellAlert.

  1. 1. Org-API-Token erzeugen (nur Owner) und in einem Feld „CellAlertToken“ hinterlegen — der Token autorisiert den Hintergrund-Zugriff ohne Login.
  2. 2. Das Script „CellAlert Sync“ (unten) anlegen und Tabellen-/Feldnamen an dein Schema anpassen.
  3. 3. Das Script als Layout-Trigger „OnRecordCommit“ hinterlegen (Layout-Einstellungen → Script-Trigger). Bei leerem Datum sendet es automatisch „delete“.

Ingest-Endpoint

https://evpwrncmodbakhseyxdl.supabase.co/functions/v1/fm-ingest

Sync-Script (FileMaker)

Baut die JSON-Daten und schickt sie per „Insert from URL“ an den Endpoint. Der Token kommt aus „Einstellungen::CellAlertToken“.

# Script „CellAlert Sync"  ·  Trigger: OnRecordCommit
Set Variable [ $url ; "https://evpwrncmodbakhseyxdl.supabase.co/functions/v1/fm-ingest" ]
Set Variable [ $body ; JSONSetElement ( "{}" ;
   [ "action"       ; If ( IsEmpty ( Kunden::Vertragsende ) ; "delete" ; "upsert" ) ; JSONString ] ;
   [ "solution"     ; Einstellungen::SolutionID ; JSONString ] ;
   [ "file"         ; Get ( FileName ) ; JSONString ] ;
   [ "table"        ; Get ( LayoutTableName ) ; JSONString ] ;
   [ "field"        ; "Vertragsende" ; JSONString ] ;
   [ "recordId"     ; Kunden::_pk ; JSONString ] ;
   [ "title"        ; Kunden::Name & " — Vertragsende" ; JSONString ] ;
   [ "due"          ; Kunden::Vertragsende_ISO ; JSONString ] ;
   [ "reminderDays" ; 14 ; JSONNumber ]
) ]
Insert from URL [ With dialog: Off ; Target: $result ; $url ;
   cURL options:
     "-X POST" &
     " -H \"Authorization: Bearer " & Einstellungen::CellAlertToken & "\"" &
     " -H \"Content-Type: application/json\"" &
     " -d @$body" ]