みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Moz様
TextDecode ( オブジェクトフィールド ; エンコード )で難なく解決しました!
これでスッキリです!
心から感謝します。
shin様
qb_dp様
mic様
面倒な質問でしたが親身になって考えてくださり感謝します!
PCに向かえない状況が続いていて返信が遅れましたことお許しください。
環境は、MacにFileMakerServer16をおいて、Windows7のクライアント上のFilmekerPro16を用いて、共有ファイルで行っています。
2017年6月頃のmoila様の質問[2017-06-14解決] 「XMLファイルの中身を1フィールドにインポートするには」と全く同じニーズがあり、そのまま採用させていただきました。
---------------
スクリプト例:
ファイルを挿入 [フィルタ; 参照; 圧縮しない; TEST::obj]
変数を設定 [$filePath; 値:GetValue ( GetAsText ( TEST::obj ) ; 2 )]
変数を設定 [$filePath; 値:Substitute ( $filePath ; ["filewin:" ; "file:/"] ; ["filemac:" ; "file:/"])]
URL から挿入 [選択; ダイアログなし; TEST::F2; $filePath]
フィールド設定 [TEST::obj; ""]
----------------
ただ、この方法は、XMLファイルがローカルにある場合はいいのですが、LAN上にある場合には、難しいことが分かりました。
そこで、苦肉の策でやろうとしていることは、
1.上記スクリプト例にあるオブジェクトフィールドを「外部に保存」、「オープン格納」とすることで、サーバー上の指定されたフォルダにそのままのXMLデータが格納されます。
2.このXMLファイルを「サーバー上のスクリプト実行」で「URLから挿入」で取りに行くことを考えました。前述のように
GetValue ( GetAsText ( TEST::obj ) ; 2 )
でパスを取得します。ファイルはMacのサーバー上にあるので、適切なURLに変換して、変数$filePathに設定します。
3.「サーバー上のスクリプト実行」で、「URLから挿入」を行うサブスクリプトを実行します。引数を$filePathとして渡してURLとし、格納フォルダに目的とするXMLファイルの内容を入れます.ここでは、サーバーマシン上にあるファイルなので、ローカルファイルとして取り込めると考えました。
4.サブスクリプトのスクリプト終了の[テキスト結果]を元スクリプトのGet(スクリプトの結果)で受け取り格納フォルダに入れます。
ここで、「サーバー上のスクリプト実行」で行っている「URLから挿入」がうまく稼働せず、「ファイルが見つかりません」と表示されてしまいます。
Mac上でローカルなスクリプトとして行う場合は同じURLでうまく稼働します。
「URLから挿入」は「サーバー上のスクリプト実行」ではうまく機能しないのでしょうか?
恐れ入りますがご教示ください。
削除します
コメント、アドバイスありがとうございました。
LAN上の共有フォルダのファイルを直接「URLから挿入」でフィールドに挿入するのは無理そうなので、別の方法を考えることにします。
新たに質問させていただきます。
親身になって考えてくださり、感謝します。
Hiro様
アドバイスありがとうございました。
file://///x.x.y.z/Kyoyu/KK/test.txt
でやってみたのですが、この場合も「接続できませんでした」となってしまいます。
参考のページを見たのですが、ブラウザによって設定が異なるとのことで、FMだとどうすればよいのかわかりまんでした。
何かいい方法はないものでしょうか?
shin様
mic様
コメントありがとうございました。
>FMSからファイルをインポートしようとしているのでしょうか。
インポート元はFMSではありません。FMSの乗っているMacでもありません。
ご指摘の通りファイルパスの書き方の問題なのかとは思っているのですが、分からず困っています。
>file://x.x.y.z/Kyoyu/KK/test.txt は無理ですか?
file://x.x.y.z/Kyoyu/KK/test.txtでやってみたのですが、この場合は
「接続できませんでした」
と表示されます。
MacにFilemakerServer16をのせて、Windows7のクライアント上のFilemakerPro16から共有ファイルを開いています。
VPNでつながっているIPアドレス[x.x.y.z]の遠隔サーバー上の共有フォルダKyoyu:KKにあるファイルtest.xmlを[URLから挿入]で獲得したいと思っています。
ファイルパスを
filewin://x.x.y.z/Kyoyu/KK/test.txt
としても「プロトコルがサポートされていません」と表示され、取得できません。
同様に、ためしに同じLAN上のサーバーにあるファイルを
filewin://server/KK/test.txt
で挿入を試みましたがこれもうまくいきませんでした。
(いろいろ試したのですがうまい来ません)
ちなみにクライアントPCのデスクトップ上に置いたtest.txtは
file://C:/Users/KK/test.txt
としてうまくいきました。
LAN上のファイルのURLの書き方がいけないような気がするのですが、いかかでしょうか?
ご教示よろしくお願いしたします。
Hiro様、qb_dp様
アドバイスありがとうございました。
テスト用にFMpro Advanced13.0v5で新しいファイルを作って、教えていただいたようにやってみたらうまくいきました。
で、作成中のファイルでやってみたらやはりうまくいきません。
よくよく考えてみたら、正確に伝えていなかった情報がありました。
作成中のファイルは、FMServer13でホストされているファイルでした。
そこで、
theURL = "fmp://$/fileName.fmp12?script=WantToDo";
の$ところを
theURL = "fmp://192.168.2.100/fileName.fmp12?script=WantToDo";
というように、IPアドレスに変えてみたら、「最終的に」うまくいきました。
(最終的にというのは、実は、将来のアップバージョンのテスト用に同じPC(サーバーでもあります)にFMpro Advanced16もインストールされていたので、ここでもつまづきました。これをアンインストールして、さらにFMpro Advanced13.0v5を修正インストールしてみたら、うまくいきました。)
伝える情報不足でお手を煩わせてしまい申し訳ありませんでした。
迅速にアドバイスいただき、心から感謝します。
(PCを触れる環境から遠ざかっていたため、投稿が遅くなり大変失礼しました。)
location.href=theURL;
もやってみたのですが、うまくいきません。
「次のURLで直打ちテストしてみる」
というのは、ウェブビューワーに直接書いてみるという意味でしょうか?
ところで、「WinのWebビューアは、JavaScript:スキームが通るから」とありますが
うまくいったら、このファイルをサーバーで共有ファイルとして、FileMakerGoで使えるようにしたいと思っているのですが、
仮に現在やろうとしていることがWin上でうまくいったとしても、FileMakerGoではできないということでしょうか?
(それなら無理して頑張らないで、スクリプト実行ボタンを作って逃げようかと思います)
Hiro様
早速のアドバイスありがとうございました。迅速な対応に感謝いたします。
確かに、テキスト内の式は実行されないことに気付いていませんでした。
ただ、ご指摘のようにやってみましたが、スクリプトが実行されません。
実は試行錯誤の過程で、
var theURL = 'fmp://$/fileName.fmp12?script=WantToDo';
(fileNameは実際の当該ファイルの名称です)
ともしてみたのですが、うまくいきませんでした。
何か考えられる原因はありますか?
環境はWindows7、FMpro Advanced13.0v5です。
ウェブビューワー内のjavascriptを使ってスクリプト「WantToDo」を実行したいと思っています。
ウェブビューワー内に直接 (<script></script>で囲まれた領域内に)
theURL = \"fmp://$\/" & Get ( ファイル名 ) & "\?script=WantToDo;
window.location = theURL ;
と書けば実行されます。
今回、HTML全体がウェブビューワーの制限文字数以上になるため、(また長くてバックスラッシュを入れるのが面倒なので、)フィールド「forHTML」を作ってそこにHTMLを書き込み、
"data:text/html," & ファイル名::forHTML
としています。
そして、フィールド「forHTML」内には上記と同じように
theURL = "fmp://$/" & Get ( ファイル名 ) & "?script=WantToDo;
window.location = theURL ;
書き込みましたが、スクリプトが実行されません。(「\"」は消しました。)
フィールド内に記入したHTML内のjavascriptから、スクリプトを実行するにはどうしたらよいでしょうか?
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 582.35 KiB (Peak: 603.33 KiB) ]