初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2017-05-31 15:10:41

moila
Member

XMLファイルの中身を1フィールドにインポートするには

お世話になります。

FileMaker Pro 15 Advanced を利用しています。
指定の場所にあるXMLファイルの中身をテキストとしてグローバルフィールドに設定したフィールドにインポートしたいです。

画面上の動きのイメージとしては
1 インポートボタンをクリック
2 ファイル指定画面
3 指定されたxmlファイルの中身を指定されたグローバルフィールドにインポート

上記を実現する方法をご教示いただけると嬉しいです。
よろしくお願いします。

Offline

#2 2017-05-31 16:04:16

チポ
Member

Re: XMLファイルの中身を1フィールドにインポートするには

インポート専用のテーブルに仮インポートして、
それを1フィールドになる様に整形して、
それをインポートしたらいいのでは。

Offline

#3 2017-05-31 17:12:52

moila
Member

Re: XMLファイルの中身を1フィールドにインポートするには

チポさま
ありがとうございます。

まず、インポートの際に拡張子の.xmlでXMLだと判断されてしまい、通常のテキストとしてのインポートができません。
xsltを使ったインポートは、元となるXMLが複雑すぎたため、現状テストの段階では、テキストエディタでXMLファイルを開き、中身を全選択肢、該当のグローバルフィールドにペースト後、カスタム関数を用いてデータ抽出等の処理をしています。

実運用に入るときは、運用者に「テキストエディタで開いて全選択コピー」という作業をさせるのも難しいかと思っているので、できるだけスクリプトなどを用いて対応していきたいです。

引き続きよろしくお願いします。

Offline

#4 2017-05-31 17:41:35

qb_dp
Member

Re: XMLファイルの中身を1フィールドにインポートするには

文字コードが「UTF-8」なら、スクリプト:URL から挿入 でフィールドにXMLファイルの内容の取得が出来ます。
但し、Windowsの場合は、ファイルパスに全角が含まれるとややこしいです。

URL から挿入 : http://www.filemaker.com/help/15/fmp/ja … m-url.html

Offline

#5 2017-06-01 12:00:36

チポ
Member

Re: XMLファイルの中身を1フィールドにインポートするには

ごめんなさい、
まったく違うことを考えていました。

よく読まないとダメですね  -_-

Offline

#6 2017-06-01 13:42:46

moila
Member

Re: XMLファイルの中身を1フィールドにインポートするには

qb_dp様
ありがとうございます。
UTF-8でしたのでスクリプトで試してみたのですが、「URLから」とあるだけあって、ローカルのXMLは選択できなさそうです。

チポ様
複雑な要求で申し訳ありません。
相変わらずノーアイデアですので、お力を貸していただけるとありがたいです。

引き続きどうぞよろしくお願い致します。

Offline

#7 2017-06-01 14:05:31

moila
Member

Re: XMLファイルの中身を1フィールドにインポートするには

qb_dp様に教えたいただいたURLから挿入をもう少し発展させて、URL欄に「"file:/" & Get(デスクトップパス) & "該当.xml"」を設定した変数を入れることで、フィールドにXMLファイルの中身を挿入することができました。しかしながら、ファイル名、ファイルパスが固定されてしまうため、現実的ではありません。
他になにか良い方法があればご教示ください。

よろしくお願いします。

Offline

#8 2017-06-01 17:06:24

Hiro
Member

Re: XMLファイルの中身を1フィールドにインポートするには

URLの指定は、計算式で動的に生成・指定できます。

Offline

#9 2017-06-09 16:44:13

moila
Member

Re: XMLファイルの中身を1フィールドにインポートするには

Hiro様

ありがとうございます。
少し方法を考えてみたのですがやはり躓いてしまいました。

1 オブジェクトフィールドにXMLファイルをドラッグ
2 格納したXMLファイルのURLを取得
3 URLからの挿入

上記流れで行けないかと考えているのですが、2のURLの取得ができません。
どうすればいいでしょうか?

どうぞ宜しくお願いします。

Offline

#10 2017-06-09 17:43:12

Shin
Member

Re: XMLファイルの中身を1フィールドにインポートするには

ドキュメントフォルダーのエイリアスをデスクトップに置いておいて、その中にファイルをドロップしておきます。
Get ( ドキュメントパス一覧 ) でドキュメントフォルダーの中のファイル、フォルダーの一覧がパスで得られますので、そこから選択すれば楽かもしれませんよ。
取り込んだ後に、消しておく作業も簡単にできます。

Last edited by Shin (2017-06-09 17:43:42)

Offline

#11 2017-06-09 17:49:34

moila
Member

Re: XMLファイルの中身を1フィールドにインポートするには

Shin様
ありがとうございます。

今作っているファイルは、想定されるユーザのためにも、なるべくファイル内だけで完結するように作りたいのです。
ですので、ご提案いただいた方法が良さそうではありますが、最終手段とできたらと考えています。

引き続きよろしくお願いします。

Offline

#12 2017-06-09 17:57:22

qb_dp
Member

Re: XMLファイルの中身を1フィールドにインポートするには

ドラッグでファイルを挿入した場合は、埋め込みになるので、パスの取得ができません。

以下ファイル選択ダイアログの代替えスクリプト例です。

スクリプト例:

ファイルを挿入 [フィルタ; 参照; 圧縮しない; TEST::obj]
変数を設定 [$filePath; 値:GetValue ( GetAsText ( TEST::obj ) ; 2 )]
変数を設定 [$filePath; 値:Substitute ( $filePath ; ["filewin:" ; "file://"] ; ["filemac:" ; "file://"])]
URL から挿入 [選択; ダイアログなし; TEST::F2; $filePath]
フィールド設定 [TEST::obj; ""]

※ドラッグでファイルを挿入した場合でも、一度テンポラリーフォルダにエクスポートし、そのファイルを「URL から挿入」で読み込むようなスクリプトを組めば、実現可能です。

Offline

#13 2017-06-14 13:23:01

moila
Member

Re: XMLファイルの中身を1フィールドにインポートするには

qb_dp様

教えていただいた方法でばっちり出来ました!
ただスクリプトのfile:// の部分がスラッシュが多かったので一つ消して正常に動作しました。
とても勉強になりました。
ありがとうございまざいました。

スクリプト例:

ファイルを挿入 [フィルタ; 参照; 圧縮しない; TEST::obj]
変数を設定 [$filePath; 値:GetValue ( GetAsText ( TEST::obj ) ; 2 )]
変数を設定 [$filePath; 値:Substitute ( $filePath ; ["filewin:" ; "file:/"] ; ["filemac:" ; "file:/"])]
URL から挿入 [選択; ダイアログなし; TEST::F2; $filePath]
フィールド設定 [TEST::obj; ""]

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 531.02 KiB (Peak: 551.93 KiB) ]