みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
環境は、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から挿入」は「サーバー上のスクリプト実行」ではうまく機能しないのでしょうか?
恐れ入りますがご教示ください。
Offline
ヘルプに、
•file プロトコルの場合:
•FileMaker Server のドキュメントフォルダまたはテンポラリフォルダ内のファイルのみを参照するサーバーサイドスクリプトで使用できます (サーバーサイドスクリプト内のパスを参照)。
とありますよ。
Offline
パスの記述方法とか、アクセス権が絡んでくるので、検証が難しいですね。
プラグインで解決してしまうとか...。
BE_ReadTextFromFile | BaseElements Plugin Help Centre : https://baseelementsplugin.zendesk.com/ … xtFromFile
フィールド設定 [Result; BE_ReadTextFromFile ( path )]
Offline
2の前に一旦オブジェクトをテンポラリフォルダにエクスポートし、エクスポートしたファイルの方を「URLから挿入」すればいけるのではないでしょうか。
私が実際にやったのはレコードのエクスポートで作成したファイルでしたが、フィールドのエクスポートでも問題なさそうに思います。
Offline
フィールドのエクスポートでも問題なさそうに思います。
「フィールド内容のエクスポート」は、FileMaker Server では、サポートされていないんですよ...。
フィールド内容のエクスポート : https://fmhelp.filemaker.com/help/16/fm … tents.html
Offline
FileMaker Server 16 のようなので
オブジェクトフィールドに XML を格納するところまでできているのであれば
TextDecode 関数でテキストフィールドにテキストとして戻せるのでは?
TextDecode ( オブジェクトフィールド ; エンコード )
TextDecode
https://fmhelp.filemaker.com/help/16/fm … ect_header
Offline
Moz様
TextDecode ( オブジェクトフィールド ; エンコード )で難なく解決しました!
これでスッキリです!
心から感謝します。
shin様
qb_dp様
mic様
面倒な質問でしたが親身になって考えてくださり感謝します!
PCに向かえない状況が続いていて返信が遅れましたことお許しください。
Offline
[ Generated in 0.008 seconds, 7 queries executed - Memory usage: 518.02 KiB (Peak: 522.92 KiB) ]