このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

AppleScriptとFileMakerの特定のフィールド値

発言者:Yaeko Muramatsu
( Date Thursday, September 18, 1997 16:18:36 )


ファイルメーカーのレコード上で、現在、一番手前にあるウィンドウの
現在表示されているレコードのフィールド値をAppleScriptにて取得し
たいのですが、方法がわかりません。
例)レコード上に「コード」というフィールドがあった場合、そのコードの
  数値をAppleScriptで変数としてあつかう。
うまく説明できていないかもしれませんが、よろしくお願いいたします。

田中求之 さんからのコメント
( Thursday, September 18, 1997 18:01:34 )

以下のようなスクリプトで可能だと思います

変数 myCode に、一番手前のウィンドウの現在表示されているレコードの cell "Code"
の値を読み込むとすると、

tell application "ファイルメーカー Pro"
  set myCode to cell "code" of current record of database (name of window 1)
end tell

田中求之 さんからのコメント
( Thursday, September 18, 1997 18:02:46 )

もし、手前のウィンドウのレコードに cell "code" がないかも知れないときには、
try / on error を使って、エラー処理を行うようにしてください。

Yaeko Muramatsu さんからのコメント
( Thursday, September 18, 1997 21:07:16 )

どうもありがとうございました。
試してみます。

藤沢雅幸 さんからのコメント
( Tuesday, January 27, 1998 15:33:03 )

FileMaker Proで「画像フィールド」に取り込まれた画像の
作成アプリケーションを立ち上げ、そのデータを開く、
という作業ををAppleScriptで作れるでしょうか。
スクリプトが解りません。
AppleScriptは初心者ですので、教えて下さい。
作成アプリケーションとは、例えばIllustratorやPhotoshop、
QuarkEXpressなどです。
対象アプリケーションがAppleScript対応でないと無理でしょうか。
また、作成アプリケーションで付けた保存ファイル名を、
FileMakerのあるフィールドに反映させるということは可能でしょうか。
宜しくお願い致します。

田中求之 さんからのコメント
( Tuesday, January 27, 1998 16:58:14 )

>FileMaker Proで「画像フィールド」に取り込まれた画像の
>作成アプリケーションを立ち上げ、そのデータを開く、
>という作業ををAppleScriptで作れるでしょうか。

この場合の取り込みは、参照データのみ取り込んである(データそのものは取り込まない)
場合ですよね。

でしたら、以下のような感じのスクリプトで、データの作成ソフトによって開かせる
ことは可能です。

--- 現在開いているデータベースの Pict というセルに画像データ(参照)が
--- 入っているとする

tell application "ファイルメーカー Pro"
  set myPath to cell "Pict" of record 1
end tell

if class of myPath = ヌclass fss ネ then
  tell application "Finder" to open myPath
end if

ようは、参照されているファイルを Finder でダブルクリックするのと同じこと
をやってます。

ヌ は option+\ で、ネ は option+shift+\ で入力する文字です。

kozka さんからのコメント
( Tuesday, January 27, 1998 17:16:34 )

ちょっと補足です。

>tell application "ファイルメーカー Pro"
>  set myPath to cell "Pict" of record 1
>end tell

の「 record 1」の部分を「current record」にすると現在表示している
レコードのデータを取ってこれます。ファイルメーカーPro2.1では
「current record」がうまく機能しなかったと思います。

藤沢雅幸 さんからのコメント
( Tuesday, January 27, 1998 18:09:53 )

早速、有難うございます。
FMPは、3.0か4.0です。
私は、AppleScriptは、recordというマクロ(?)しかやったことが無いので、
自分でスクリプトを作るということは初めてなので、宜しくお願い致します。
ところで早速試したいのですが、その前に言葉を理解しておきたいので…。

まず、田中さんへ
(1)set myPathとは?
(2)ヌclass fss ネとは?。ここで何故田中さんは
  「ヌ はoption+\ で、ネ は option+shift+\ で入力する文字です。」と、
   説明を入れてくれたのでしょうか。class fssって何ですか?

次にkozkaさんへ
(1)「record 1」の部分を「current record」にする、というのは、
  つまり「current record」にしないと画像データのファイル名は、
  FMPに反映(=ペースト?)出来ないということでしょうか。

宜しくお願い致します。

田中求之 さんからのコメント
( Tuesday, January 27, 1998 23:23:04 )

AppleScript で自分でスクリプトを書いた経験がない方には、ちょっと面食らう
ようなレスポンスになってしまいました。

まず簡単に説明する前に、もし AppleScript によってファイルメーカーやその他の
アプリケーションなどをコントロールしたいと思われるのでしたら、しかるべき参考書
なり、ガイド本で AppleScript について学ばれることをお勧めします。比較的
英文に近い表記を用いる言語ですが、プログラミング言語であることには間違いなく、
それなりの習得の努力を行わなければ、けっしてマスターできるものではなりません
から。

で、私が書いたスクリプトでは何をやっているかというと、

tell application "ファイルメーカー Pro"
  set myPath to cell "Pict" of record 1
end tell

この部分で、myPath という変数にセル(フィールド) "Pict" に入っている
データを収めています。ファイル参照で画像を取り込んだ場合には、セルには
画像が表示されますが、データとしてはファイル参照(ファイル指定)、つまり
どれが元データのファイルであるかに関する情報が入っています。これを取り出して
います。

if class of myPath = ヌclass fss ネ then
  tell application "Finder" to open myPath
end if

で、とりだした情報(myPath という変数に入っています)が、本当にファイルの
情報であるかどうかを確かめて、もしそうならば、ファインダーに対して元ファイル
を開くように指示を出しています。元ファイルを開かせるということは、Finder
でダブルクリックするのと同じことですので、けっきょくオリジナルの作成ソフト
も同時に立ち上がることになります。

で、myPath に入っている情報がファイルに関する上かどうかの判定の際に、
データの種類で判定を行っています。ファイルに関する情報は、AppleScript
では3種類ほどあるのですが(データの型というものが存在します)、ファイルメーカー
が記録に使うのは、ファイル指定( File Specification)とよばれる種類の
データのようですので、この種類になっているかどうかを調べています。
ファイル指定というデータの型を表す表記が ヌclass fss ネ です。


藤沢雅幸 さんからのコメント
( Wednesday, January 28, 1998 12:10:17 )

有難うございました。
AppleScriptの「スクリプト編集プログラム」を英語に切り替えて実行したら
FMPからIllustratorもPhotoshopも立ち上がり、目当てのファイルが開きました。
ですが、その該当する画像ファイルの「ファイル名」をFMPの中の
「テキストフィールド」にペーストするにはどうしたら良いでしょうか。

上述の状態の時点では、IllustratorやPhotoshopが最前面で立ち上がっていま
すが、ここでFinderを最前面に持って来ないでファイル名をコピーするという
ことが可能かどうか。
次に、FMPに戻り、自分がペーストしたい「テキストフィールド」にペースト
するということになると思うのですが、どうも昨日のスクリプト例を参考に
しつつ想像して探ってみましたが、エラーは出ないで
FMPの指定テキストフィールドでカーソルが点滅するところまでは行くのですが、
例えペースト出来てもスクリプトのある部分がペーストされてしまいます。
御指導、宜しくお願い致します。

田中求之 さんからのコメント
( Wednesday, January 28, 1998 12:34:28 )

>その該当する画像ファイルの「ファイル名」をFMPの中の
>「テキストフィールド」にペーストするにはどうしたら良いでしょうか。

たとえば、ファイル名を入れておくセル(フィールド)の名前が "FileName"
だとしますと、以下のようなスクリプトで、取り込んでいる画像のファイル名が
そのセルに入ります。

tell application "ファイルメーカー Pro"
  set myPath to cell "Pict" of record 1
end tell

if class of myPath = ヌclass fss ネ then
  tell application "Finder"
    set myName to name of myPath
  end tell
end if

tell application "ファイルメーカー Pro"
  set cell "FileName" of record 1 to myName
end tell

操作としては、Finder を使ってファイルの名前を調べて、それを
cell "FileName" に収めるということをやっています。


藤沢雅幸 さんからのコメント
( Wednesday, January 28, 1998 13:00:47 )

田中さんへ

早速やってみます。
本当に本当に、有難う御座居ました。

kozka さんからのコメント
( Wednesday, January 28, 1998 14:09:28 )

>「record 1」の部分を「current record」にする

「record 1」だと常に1番目のレコードを操作する事になります。
「current record」にすれば現在表示/編集しているレコードを操作できます。
(例:5番目のレコードを表示していれば5番目のレコードを操作できます)



藤沢雅幸 さんからのコメント
( Wednesday, January 28, 1998 19:38:45 )

kozkaさんへ

kozkaさんのおっしゃるように、「current record」にしたら
うまくいきました。
本当に、拙い私のために有難う御座居ました。