FileMakerのWebコンパニオンが時々落ちる。原因不明。
しょうがないので、プロセスが起動しているかどうかをチェックし、起動していなかったら、再度立ち上げるAppleScript。
tell application "ファイルメーカーPro"
activate
open file "*********"
end tell
end run
on idle
set myList to application processes whose name contains "ファイルメーカーPro"
if myList = {} then
open file "*********"
set the date_stamp to ((the current date) as string)
try
set fPointer to open for access (file "Data:filemaker:********:fmrestart.txt") with write permission
write date_stamp & return to fPointer starting at eof
end try
close access fPointer
end if
return 20
end idle
(****のところは自分とこのパスorファイルに書き換える)
解説:まず、on runで、スクリプト起動時に、必要なファイルを開く。
つぎに、on idleで、AppleScriptでつくったアプリケーションが、アイドル時に行う動作を定義する。
ここでは、Finderから"ファイルメーカーPro"という名前が含むプロセスリストを取得し、それがカラだったら、すなわち、プロセスが起動してないと判断し、ログに記録する。(fmrestart.txt)
return 20で、20秒後とにチェックする。本来であれば、もうすこし間隔をあけてもよいと思うけれど、どうもWSC(WebServerConnect)が、FMのプロセスと通信できない時間が30秒くらい立つとWSCもダメになってしまうようなので、20秒間隔でチェックすることにする。
on idle時にプロセスの有無をチェックせずにふつうにファイルを開いてもいいのだけれど、定期的にアプリが強制的に全面に来てしまうので、しょうしょううざったい。
一つ重要なのは、ScriptEditorから、アプリを生成する時に「実行後、終了しない」をチェックしてから生成しないと、on idleイベントを実行できないので要注意。