スクリプトをサーバーで実行(PSOS)とアクセス権について
FileMaker Proにはバージョン13から「スクリプトをサーバーで実行」というスクリプトステップが追加されました。この機能を利用するときには「コンテキストを意識する」「ファイルを開くときに実行されるスクリプトに注意する」などがよくいわれます。今回はファイルのアクセス権の継承について、注意が必要なことを記載します。
よくある使い方1
処理をサーバーに任せたいスクリプトがあるファイルからPSOSを実行するケースが多いと思います。
下図の様な場合、サーバーでスクリプトBを実行する場合には、アクセス権はFileMakerクライアントから引き継がれます。
よくある使い方2
もう少しややこしい場合もスクリプトCを実行する場合に、アクセス権はFileMakerクラアントから引き継がれてPSOSは実行されます。
エラーになるケース
下図のようにクラアントが開いていないファイルにアクセスするような場合にエラーになります。この場合はファイルCにアクセスできないので、フィールド値など取得できず、スクリプトが失敗します。
エラーの回避方法
サーバーで実行するスクリプトに必要な外部ファイルをクラアント側で開いておくことで、このエラーは回避できます。
あるいは、ファイルCに対して、ファイルオプションで開くときのアカウントとパスワードを設定しておくことでもエラーを回避できます。
今回のエラーについて
最近は複数テーブルを一つのファイルにまとめて運用することが多いので、あまりこのエラーに出会うことは少ないかもしれません。このエラーに出会う可能性が高いのは、1ファイル1テーブルのようなver6以前に作られたシステムでしょうか。
このエラーの厄介な点はサーバーに記録されるevent.logには認証エラーと出るので、パスワードなどがファイル間で違っているのではないかと先にそちらを疑ってしまうことです。
また、自分について言えば、event.logを見る前には、レイアウトに関連ファイルのフィールドがないから自動で開かれないのかと色々試行錯誤してしまったりもしました。
FileMaker Pro 19のヘルプには下記のように説明されています。
サーバーサイドスクリプトを起動したクライアントによってファイルがすでに開かれているか、ファイルの [ファイルオプション] ダイアログボックスで指定したアカウント名とパスワードでファイルが設定されている。
(FileMaker Pro 19ヘルプ、作業を自動化するためのスクリプトの作成>スクリプトの作成と編集>FileMaker Server および FileMaker Cloud 製品でのスクリプトの実行より。)
みんきーはおすすめ
どうやっても正常に動作せず、サーバーで実行することを半ば諦めかけていました。最後にみんきーで質問してみたところ、他の方達から解決のいとぐちを貰えました。みんきーおすすめです。
この記事が気に入ったらサポートをしてみませんか?