6 返信 最新の回答 日時: Dec 19, 2013 9:37 PM ユーザー:Nu-nrg

    定期的にスクリプトを実行できますか

    Nu-nrg

      タイトル

      定期的にスクリプトを実行できますか

      フォーラムに投稿

           毎日0時15分に、レコードをある条件で検索して、その件数をメールで通知したいと思います。

           この流れはスクリプトを用意しました。
           ontimerスクリプトを検討しましたが、秒換算間隔での実行というのと、ウィンドウを常に開いていなければならないのがネックです。
           Filemakerとファイルを開いておけば、定期的にスクリプトを実行できるソリューションなんてあるのでしょうか?
           またserverならサーバーサイドのファイルでスクリプトを実行できるようなスケジュール機能みたいなものがあるのでしょうか。

           こんな通知用スクリプトを複数使いたいと思いますので、serverで出来るのなら検討したいと思います。
           宜しくお願いします。

           環境:Min7 Mac10.9ともFm ad v12

        • 1. Re: 定期的にスクリプトを実行できますか
          sago350@未来Switch
               FileMakerServerであれば、サーバーサイドスクリプトという機能を使って、FileMakerServer側でスクリプトを実行することができます。
               しかし、全てのスクリプトが使えるわけではなく、制限があります。制限はスクリプトを記述する画面の左下でドロップダウンを選択することで解ります。
                
               FileMakerProを使って、定期的にスクリプトを実行させる方法であればスクリプトの制限が無いので楽です。ただし、パソコンが1台必要となりますが。
               FileMakerProを常に起動しておくのではなく、その時刻にだけ実行したい場合はWindowsであれば「タスク・スケジューラ」という機能を使ってFileMakerのファイルを開くように設定すれば可能です。そのFileMakerのファイルが起動した時に実行するスクリプトに、実行したいスクリプトを指定してやればOKです。(スクリプトの最後にFileMakerを終了するように設定しておけば、FileMakerも終了しますよね)
                
               Macであれば、iCalの予定で実行できるかも。
          • 2. Re: 定期的にスクリプトを実行できますか
            ねこ吉

                 Mac OS X の場合は、コマンドラインで crontab コマンドを使えるのではないでしょうか。

                 crontab は、一定時刻にプログラムを起動する UNIX のコマンドです。検索すれば情報が

                 たくさんあると思います。

                 具体的な手順は次のようになります。

                 (1) まず、FileaMaker で、起動直後に自動的にスクリプトを実行するデータベースを作ります。

                  ファイル名は例として、task01.fmp12 とします。

                 (2) 次に、task01.fmp12 を開くためのシェルスクリプトを作ります。

                  テキストエディタで、次のような内容のテキストを作り、task01.sh という名前で保存します。

                 #!/bin/sh

                 open ~/task/task01.fmp12
                  

                       保存場所は、例としてホームフォルダの下の task フォルダとします。

                       
                 (3)  task01.sh に実行パーミッションを与えます。
                  ターミナルで次のように実行します。
                 chmod 777 ~/task/task01.sh 
                  
                 (4)  crontab コマンドで、 task01.sh を実行する時刻を指定します。
                  操作は次のようになります。
                 crontab -e 
                 とターミナルで入力すると、vi ライクな画面になるので、
                 15 00 * * * ~/task/task01.sh

                 と時間を指定し、

                 :wq

                 と入力して vi ライクな編集画面を閉じます。

                 以上です。Mac の電源は入れっぱなしにしておきます。

            • 3. Re: 定期的にスクリプトを実行できますか
              sago350@未来Switch

                   AutomatorというMacに付いてくる自動化ソフトで「カレンダーアラーム」というので作るとiCalと連動するスケジュールが作れますね(知らなかった)。
                   iCalでその予定を定期的な予定に設定すると、毎日とか毎週木曜日・・・等設定できますね。

              • 4. Re: 定期的にスクリプトを実行できますか
                Nu-nrg

                     saga35さん、ねこ基地さん、ありがとうございます。
                     サーバーサイドスクリプトは良いですね、サーバーのver13なんかではかなり強化されたのでしょうか?情報ありましたらお願いします。

                     クライアント側で行う場合ですが、cron、Automatorの方法があるんですね。
                     ただ、スクリプトトリガをファイルを開いたときに設定しておくと、開きっぱなしにしなくてもよいという心配はありませんが、誰かが作業していて(当件の例では深夜の作業にしていますが)すでに開いている場合はどうなんでしょうか。

                定期的にスクリプトを実行するという性格上、基本は当該ファイルは開きっぱなしにしておくというのが正解なのかと思います。
                     でだれかが閉じてしまった場合にも
                cron、Automatorで定期的に立ち上げるという感じでしょうか。

                     サーバーでこのような定期実行スクリプトを実行する方が良さそうな気もしてます。
                     ヴァージョン13からはライセンス形態もかわって小規模でも若干安価に導入できるのかな?なんて思ってます。

                • 5. Re: 定期的にスクリプトを実行できますか
                  ねこ吉

                       自分が実際にやっていたのは cron の方法で、業務時間内に 10分ごとに DB に

                       新規入力されたレコードの内容を調べ、対応が必要となる社員にメールで

                       通知するというものでした。

                       そのため、メール送信専用の Mac Mini があり Pro のライセンスも1つ消費するという

                       使い方でした。1回の処理ごとに FileMaker の起動と終了をしていました。

                  • 6. Re: 定期的にスクリプトを実行できますか
                    Nu-nrg

                         ねこ吉さん

                         なるほど、専用のファイルメーカーを1機ですか。
                         バーチャルマシンで動かせばハードは1機で出来ますし、proライセンス新規に買うならサーバーライセンスを買った方が良いかななんて気もしてます。

                         サーバーサイドスクリプトはサーバーフォーラムに聞いた方が良さそうですね。