みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になってます。
環境
Windows Server 2012 R2
FileMaker Server 14
FileMaker Pro 14 Webdirectで利用
FileMakerからバッチファイルを実行し、
バッチファイルの戻り値をFileMaker側に受け取る事は可能でしょうか。
実行自体は「Eventを送信」で可能なのは分かっているのですが、
値の受け取り方が分からず悩んでいます。そもそもできないのかも不明です。
例えば、
バッチファイルの実行結果が1であればスクリプトを実行、2であれば何もしないのような事をしたいのですが、
可能でしょうか。
宜しくお願いします。
Offline
Proだったら、戻り値をテキストファイルとして保存して、そのテキストファイルをインポートして値を取得なんていう回りくどいことすればなんとかなるけど、Event を送信スクリプトはWebDirectは使えませんよ。
Server上のスクリプト実行でも使えないです。
そもそも「FileMakerからバッチファイルを実行」は、サーバ上で実行したいんですかね?
サーバ上なら、スケジュールタスクに「スクリプトシーケンス」というのがあります。
スクリプトシーケンスから FileMaker スクリプトに進むには、前処理スクリプト(指定した場合)が値0(ゼロ)を返す必要があります
これをクライアントから起動するには、「サーバ上のスクリプト」でキューにファイルを作成して、定時実行しているスクリプトシーケンスがそれをチェックする、などが考えられます。
ありがとうございます。
やりたい事は、FileMaker Serverのスケジュールで、他で使用しているシステムからダウンロードした
CSVファイルのインポートを自動で行えるようにしたいのです。
その別のシステムが以下、FileMakerの指定ディレクトリに自動でファイルを格納してくれれば済む話なのですが、
諸事情により当分難しく現在はディレクトリへの格納は難しく、サーバに入りディレクトリにCSVを格納し、
FileMaker Serverのインポート用のスケジュールを手動実行している状態です。
指定ディレクトリ
C:\Program Files\FileMaker\FileMaker Server\Data\Documents\SeihinkaList
そのため以下のような方法はどうかと思い試してみたのです。
・クライアントから、上記指定ディレクトリにCSVを転送するバッチファイルを実行(作成済)
・上記指定ディレクトリのファイルの更新日時が以前と同じであれば1を、違ければ2を返すバッチファイルを作り、
これをFileMakeServerのスケジュールで実行し、実行結果が1の場合は何もせず、2の場合、
FilemMakerのインポートのスクリプトを実行(作成済)
更新日時については別のテキストファイルに保持、比較を行い2であった場合のみ更新日時を更新する。
上記であればクライアントでCSVをダウンロードして転送用のバッチファイルを
実行するだけで済むかなと思ったのですがなかなかうまくいかない状態です。
このような方法は難しいのでしょうか。
宜しくお願い致します。
Offline
バッチファイルを実行するのはクライアントなわけですから、「2を返すバッチファイル」でなく「FMのスクリプトを実行するバッチファイル」にすればいいのでは。
start fmp://server/filename?script=scriptname
でFMがfilenameを開いてscriptnameを実行します。
そのスクリプトでインポート。
CSVはクライアントがダウンロードして手元にあるのだから、サーバに転送する必要ないですね。
Webdirectでの使用の為、上記コマンドはクライアントPCからは通りませんでしたが、
Server上で、比較するバッチファイルの、
ファイルの更新日付が違かった場合に2を返していた部分を変更し、
ご教示いただいた start fmp~と記述して手動実行したところ、
正常に実行できインポート出来ました。
しかし、FileMaker Serverのスケジュールのシステムスクリプトに登録し実行しても
Windowsのタスクスケジューラに登録して実行してもインポート処理が実施されませんでした。
比較用のテキストファイルの更新日は変更されているので、処理は通っており、
このコマンドが自動実行できないもののようです。
こうなるとあきらめて今まで通りの運用を続けるしかないようです。
ありがとうございました。
Last edited by kazoo (2016-05-11 17:39:28)
Offline
更新日時で判断せずに、クライアントからファイルを送信したら別の適当なファイルを作成します。サーバーサイドスクリプトで数分毎にそのファイルをチェックし、存在しなければそのまま終了、存在すればインポートを実行させる、その後その別ファイルを削除しておく、という動作をさせておけばいかがでしょう。
ファイルの送信から同期までタイムラグができますが、それが支障無ければ単純な処理かも知れませんよ。
Offline
Pages: 1
[ Generated in 0.013 seconds, 9 queries executed - Memory usage: 517.17 KiB (Peak: 521.71 KiB) ]