У меня была похожая проблема, когда я хотел, чтобы действие FileMaker запустило скрипт, который предупредил бы веб-сайт, что что-то изменилось.Я работал в FileMaker Pro 11, поэтому Insert from URL
не вариант (хотя, как бы мне этого хотелось)!
Я создал скрипт FileMaker под названием Sync и дал ему одно действие: Perform AppleScript
(очевидно,это работает только на Mac; вы можете добиться чего-то подобного, используя Send DDE Execute
в Windows).
В параметрах шага сценария я установил для Perform Applescript
значение Calculated AppleScript
и установил его следующим образом:
"do shell script \"curl http://example.com/sync.php?id=" & Get( RecordID ) &
"\\\&layout=" & GetAsURLEncoded( Get( LayoutName ) ) & "\\\&table=" &
GetAsURLEncoded( Get( LayoutTableName ) ) & "\""
Запишите все кавычки и экранирование кавычек.
Чтобы заставить это выполниться, когда что-то изменяется, перейдите в Файл »Управление» Макеты и выберите макет, где пользователь может редактироватьзапись, затем нажмите Edit
.В появившемся диалоговом окне «Настройка макета» перейдите к Script Triggers
и для события OnRecordCommit
выберите сценарий синхронизации, который вы только что создали.
Теперь при изменении записи в этом макете сценарий синхронизации будет запускатьвыполняет AppleScript, который выполняет команду оболочки curl
, отправляя GET-запрос что-то с эффектом:
curl http://example.com/sync.php?id=123&layout=Edit%20Records&table=Records
Оттуда создайте sync.php
, чтобы делать что-то умное при загрузке, используя $_GET['id']
и $_GET['layout']
и $_GET['table']
или аналогичные сквозные переменные.
Одно предостережение при таком подходе заключается в том, что FileMaker зависает во время выполнения сценария оболочки, что в данном случае означает, что curl либо не получит ответ, либовремя вышло.Хотя вы можете установить очень низкое время ожидания (добавьте аргументы --output /dev/null --silent --head --fail --connect-timeout 1
), оно все равно вызывает задержку пользователя примерно на секунду, что может быть заметно, если пользователь редактирует много записей.Если у кого-то есть решение для этого или способ заставить скрипт работать асинхронно в фоновом режиме, пожалуйста, дайте мне знать.