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

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

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

You are not logged in.

Announcement

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


#1 2019-08-09 10:55:16

桜井
Guest

クリップボードの複数の値をフィールドに貼り付け

お世話になっております。FM17、MacOS10.14.6です。

商品データのマスタテーブルに、その商品を表すPDF画像のファイルパスを格納したフィールドがあります。
現状は、右クリック+optionキーでパスのコピーを選択して、ひとつずつ該当フィールドに貼り付けという手作業で行っているのですが、ひとつの商品に対して複数のPDFがあるために時間がかかっており、ここを改善したいです。


質問1:パスをまとめてコピーして、ひとつのグローバルフィールドに貼り付け、GetValueで振り分けたりできないかと思ったのですが、クリップボードに複数の値を入れてもフィールドに入るのは先頭の1つだけです。一度にパスをコピーしてひとつのフィールドに入れるという操作は、ファイルメーカーではそもそも不可能なのでしょうか?

質問2:より感覚的に、ドラッグ&ドロップでパスだけ取得できないかと考えたのですが、オブジェクトフィールドにはPDFそのものが埋め込まれてしまうようで、GetAsTextを使ってもファイル名が取得されるだけで、パスを取得するということができません。ドラッグ&ドロップの操作では不可能なのでしょうか?


上記の方法でなくとも、別の方法でファイルパスをうまく取得できる方法があればご教示いただけると幸いです。

#2 2019-08-09 16:54:03

Shin
Member

Re: クリップボードの複数の値をフィールドに貼り付け

オブジェクトフィールドを作り、ドラッグ&ドロップで、そのフィールドへ落とせば、ファイルの実体が入ります。それを複数用意するか、関連テーブルとして用意しておけば管理は楽ですよ。

Offline

#3 2019-08-14 16:56:46

koeda
Member

Re: クリップボードの複数の値をフィールドに貼り付け

Shinさんの回答どおり、実体を含めて管理するのが後々ラクなのでは?と私も思います。
ファイルパスだけを敢えて独立に管理したい、ということであれば以下を参考にしてください。

次のように「貼り付け」の前にAppleScriptを実行すれば、桜井さんの質問1は解決できそうです。

#AppleScriptを実行{"set  the clipboard to (do shell script "pbpaste" )" ]
#貼り付け [ 選択 ; スタイルなし ; 貼り付け先:フィールド名 ]

AppleScriptの記述欄には以下をコピペしてください。

set  the clipboard to (do shell script "pbpaste" )

以下のAppleScriptでも良いことが判明しました(8/15訂正)

set the clipboard to (the clipboard as «class RTF »)

(以下、解説。)
Finderのショートカット「command + option + C」で複数ファイルのパスをクリップボードにコピーできます。
この時クリップボードの中身は、以下のようなプレーンテキストです。

Path A¶Path B¶Path C

これをFileMakerへペーストすると、桜井さんの指摘どおり、1行目しかペーストできません。
しかし、いったんTextEditなどへ貼り付けてから、さらにFileMakerへコピペすると全行がペーストできます。
(これが仕様なのかバグなのかはわかりません。)
この時、クリップボードの中身はリッチテキスト(RTF)になっています。

つまり、このようにクリップボードの中身をなんらかの方法でRTFに変換できれば、
FileMakerで全行貼り付けが可能になりそうです。

ところで、Macにはpbpasteというコマンドがあり、これをターミナルで実行するとクリップボード
の中身をRTFで出力することができます。
クリップボードの中身をこのpbpasteの実行結果で置き換えるか、または直接RTFへ変換し、
その後に「貼り付け」ステップを実行すれば、複数行を貼り付けることができる、というわけです。

※反対のpbcopyというコマンドもあります。

Last edited by koeda (2019-08-16 11:02:33)

Offline

#4 2019-08-19 13:18:58

桜井
Guest

Re: クリップボードの複数の値をフィールドに貼り付け

Shin様、koeda様、回答ありがとうございます!

原則としてはファイルの実体を入れてしまうのが良いのですね。それをすると1データ1カ所の法則が乱れるかと思ったため、パスの取得にこだわっておりました。
せっかくデータベースを作っているのだから、データの実体もファイルメーカーで管理した方が将来的には楽になる、ということでしょうか?

ひとまずkoeda様の方法を試したところ、望む動きをしてくれましたので、解決済みにいたします。詳しい解説までつけていただき、ありがとうございました。
applescriptは他にもいろいろと使えそうで、記述のしかたもファイルメーカーのスクリプトと似ているので、試しに触ってみようと思います。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.016 seconds, 10 queries executed - Memory usage: 515.02 KiB (Peak: 520.6 KiB) ]