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

フォルダ内の複数画像とファイル名をファイルメーカーに取り込みたい

発言者:ina
( Date Friday, September 14, 2001 22:36:25 )


Macでファイルメーカー5を使用しています。
フォルダ内の複数画像データーを、まとめて一括で取り込みたいと
考えています。違うBBSで以前に見つけたのを試したのですが、
画像しか貼り付けず、ファイル名も同時に来て欲しいのです。
が、知識がありません。仕事が進まなくて困っています。

まずファイルメーカーの書類名は「あああ」としています。
そして「画像取込」というスクリプトを作っています。

1.レイアウト切替「レイアウト1」
2.フィールドへ移動「画像」
3.ピクチャを挿入「temp」
.....ピクチャの挿入でファイルを指定するため「temp」という名の
画像を一つ準備し、3.で指定しておきます。

下記のAppleスクリプトに流し込みたい
画像データー(複数)をドラッグ&ドロップで実行すると、

on open doc
--基準フォルダDBPATHnameの取得
set DBPATHname to path to me as text
set ASDemilit to text item delimiters of AppleScript
set text item delimiters of AppleScript to ":"
set DBPATHname to text from text item 1 to text item -2 of DBPATHname
set text item delimiters of AppleScript to ASDemilit
set DBPATHname to DBPATHname & ":"


repeat with I in doc
tell application "Finder"
try
move file (DBPATHname & "temp") to trash
on error
--display dialog (DBPATHname & "temp")
end try
set aa to name of file I
move file I to folder DBPATHname
set aa to DBPATHname & aa
set name of file aa to "temp"
end tell

tell application "ファイルメーカー Pro"
activate
create new record at last record of database "あああ"
go to cell "画像" of last record of database "あああ"
do script FileMaker script "画像取込"
end tell
end repeat
end open

画像は新しく作ったレコードの「画像」へ「temp」として一度
名前が変わり、置き換わったのがコピーされるのですが、、、
これではやはり画像しか来ないのです。
私は、ファイル名も同時に流し込みたいので、
「番号」というフィールドを作っておき、そこに画像のファイ
ル名が流し込める様に、Appleスクリプトを書き足したいのですが、
どの様にファイル名を「temp」のように変換したりするのか?
そのままフィールドに流し込めるのか?どの様に「テキストの挿入」
をするのか?などわかりません。
教えてもらえないでしょうか? 長文になり申し訳ありませんでした。

おがわまこと さんからのコメント
( Friday, September 14, 2001 23:45:38 )

下記のように変更すれば可能かと思います.


on open doc
  --基準フォルダDBPATHnameの取得
  set DBPATHname to path to me as text
  set ASDemilit to text item delimiters of AppleScript
  set text item delimiters of AppleScript to ":"
  set DBPATHname to text from text item 1 to text item -2 of DBPATHname
  set text item delimiters of AppleScript to ASDemilit
  set DBPATHname to DBPATHname & ":"
  
  
  repeat with I in doc
    tell application "Finder"
      try
        move file (DBPATHname & "temp") to trash
      on error
      end try
      set aa to name of file I
      move file I to folder DBPATHname
      set bb to DBPATHname & aa
      set name of file bb to "temp"
    end tell
    
    tell application "ファイルメーカー Pro"
      activate
      create new record at last record of database "写真"
      go to cell "画像" of last record of database "写真"
      set cell "ファイル名" of last record of database "写真" to aa
      do script FileMaker script "画像取り込み"
    end tell
  end repeat
end open


その昔作ったスクリプトなので,汚い書き方になっていますが,ご容赦を.

ina さんからのコメント
( Saturday, September 15, 2001 03:22:34 )

まことさん、早速の返事有り難うございます。

出来ました!!感動です。ずっと悩まされていたので、とても
うれしいです。本当に有り難うございます。

しかし、すこし問題が残ってしまいました。。。

私のMacには、ファイルメーカーのVer4.1とVer5が混在しています。

いま作成中の書類に、このスクリプトを反映させたいのですが、
その書類はVer5で作っているのです。
どうしてもVer4.1の方が起動し始めて、エラーになります。
同じような書類(簡易)をVer4.1で作ってみて実行すると、見事に
コピー出来るのですが、なぜ5の方でなく4.1の方が優先して起動
してしまうのか、教えてください。( "写真"のファイルネームを
違うのに変えてみてスクリプトも書き換えているのですが・・・)

 tell application "ファイルメーカー Pro"
の部分を書き換えればいいのでしょうか?それとも、4.1は破棄し
ないとだめなのでしょうか?

原因を教えてください。
よろしくお願いします。

田中求之 さんからのコメント
( Saturday, September 15, 2001 09:13:15 )

同じソフトの2つのバージョンが混在する場合、あとからインストールしたもの
が優先されるのだったと思います(たしか)。

で、対処方法ですが、

tell application "ファイルメーカー Pro"

の部分を、

tell application "Macintosh HD:アプリケーション:FMP:ファイルメーカー Pro"

というように、フルパスを使って指定するようにすれば、指定されたパスに
あるバージョンのものが必ず動くようになりますよ。

ina さんからのコメント
( Saturday, September 15, 2001 16:40:17 )

有り難うございます。早速試してみます。

ina さんからのコメント
( Saturday, September 15, 2001 22:55:48 )

まことさん、田中さん、有り難うございました。
バッチリです。(^_^)b

しかし、画像の取込順序がよくわからないです。
連番の時もあるし、バラバラに取り込む時もあるし・・・
まっ、最後にソートかければいいんですけどね・・・
ちょっと気になっただけです。

本当に有り難うございました。助かりました。

Kohichi さんからのコメント
( Friday, April 19, 2002 19:28:14 )

まことさん、田中さん、inaさんへ。

はじめまして。Kohichiと申します。
ファイルメーカーPROとAppleScriptの操作で悩んでいます。
悩みとは、以前( Date Friday, September 14, 2001 )
inaさんがお悩みだった件と全く同じです。
(フォルダ内の複数画像とファイル名をファイルメーカーに取り込みたい)
このBBSにめぐり合い、早速自分でも取り組んでみたのですが、
どうしてもうまく行きません。
誠に恐縮ですが、私にも詳しくご指南いただけませんでしょうか?
(当方、ファイルメーカーPROは概ね分かるのですが、
AppleScriptは全くの素人です。)

まず、当方の作業環境です。
◎Macintosh OS9.1
◎ファイルメーカーPRO 5.5
◎AppleScript J1-1.6
◎ファイルメーカーのファイル名「1_photo.db」
 画像フィールド名「サムネール」
 画像名フィールド名「ファイル名」
 スクリプト名「photo.pct取込」
 上記スクリプトの記述内容はinaさんの方法と同様です。
 下記に引用させていただきます。
 1.レイアウト切替「レイアウト1」
 2.フィールドへ移動「サムネール」
 3.ピクチャを挿入「temp」
 .....ピクチャの挿入でファイルを指定するため「temp」という名の
 画像を一つ準備し、3.で指定しておきます。

◎見よう見まねで試したAppleScript記述内容です。

on open doc
  --基準フォルダDBPATHnameの取得
  set DBPATHname to path to me as text
  set ASDemilit to text item delimiters of AppleScript
  set text item delimiters of AppleScript to ":"
  set DBPATHname to text from text item 1 to text item -2 of DBPATHname
  set text item delimiters of AppleScript to ASDemilit
  set DBPATHname to DBPATHname & ":"
  
  
  repeat with I in doc
    tell application "Finder"
      try
        move file (DBPATHname & "temp") to trash
      on error
      end try
      set aa to name of file I
      move file I to folder DBPATHname
      set bb to DBPATHname & aa
      set name of file bb to "temp"
    end tell
    
    tell application "Macintosh HD:ファイルメーカー Pro5.5:ファイルメーカー Pro"
      activate
      create new record at last record of database "1_photo.db"
      go to cell "サムネール" of last record of database "1_photo.db"
      set cell "ファイル名" of last record of database "1_photo.db" to aa
      do script FileMaker script "photo.pct取込"
    end tell
  end repeat
end open

以上を実行専用形式で保存して、
その上に画像ファイル(画像ファイル名は、12345678.pctのように数字8桁
に拡張子のついた形式です)を複数選択し、ドラッグ&ドロップ。
(でよろしいのでしょうか。その時ファイルメーカーのスプリクト設定用に
用意した「temp」という画像はもう必要ないのでしょうか。また「ファイル
メーカーのファイル」「画像ファイル」「AppleScriptの実行ファイル」の
格納場所はどこでもよいのでしょうか。これらをいろいろ試しました)

結果、下から7行目でエラーが出てしまいます。
アラートは「オブジェクトが見つかりません」というものです。
「1_photo.db」の格納場所をあちこちと移動したり、
フルパスを記述したりしましたが、全く同じエラーがでてしまいました。
また、AppleScriptの参考書を見ながら、基本的な記述内容を理解しようと
務めましたが、ところどころ断片的にはわかるものの、全体の構造がまった
く理解できません。情けないです。
大変あつかましいお願いなのですが、上記解決法とともに、
どうしてこのような記述になるのかできましたら各行の解説を
スクリプト内にインラインでお願いできませんでしょうか?
みなさまお忙しい中ご無理言いまして申し訳ありません。
何卒何卒よろしくお願い申しあげます。

Kohichi さんからのコメント
( Friday, April 19, 2002 19:46:40 )

すみません。先の書き込みが途中で切れてしまったのでその続きです。
◎見よう見まねで試したAppleScript記述内容です。

on open doc
  --基準フォルダDBPATHnameの取得
  set DBPATHname to path to me as text
  set ASDemilit to text item delimiters of AppleScript
  set text item delimiters of AppleScript to ":"
  set DBPATHname to text from text item 1 to text item -2 of DBPATHname
  set text item delimiters of AppleScript to ASDemilit
  set DBPATHname to DBPATHname & ":"
  
  
  repeat with I in doc
    tell application "Finder"
      try
        move file (DBPATHname & "temp") to trash
      on error
      end try
      set aa to name of file I
      move file I to folder DBPATHname
      set bb to DBPATHname & aa
      set name of file bb to "temp"
    end tell
    
    tell application "Macintosh HD:ファイルメーカー Pro5.5:ファイルメーカー Pro"
      activate
      create new record at last record of database "1_photo.db"
      go to cell "サムネール" of last record of database "1_photo.db"
      set cell "ファイル名" of last record of database "1_photo.db" to aa
      do script FileMaker script "photo.pct取込"
    end tell
  end repeat
end open

以上を実行専用形式で保存して、
その上に画像ファイル(画像ファイル名は、12345678.pctのように数字8桁
に拡張子のついた形式です)を複数選択し、ドラッグ&ドロップ。
(でよろしいのでしょうか。その時ファイルメーカーのスプリクト設定用に
用意した「temp」という画像はもう必要ないのでしょうか。また「ファイル
メーカーのファイル」「画像ファイル」「AppleScriptの実行ファイル」の
格納場所はどこでもよいのでしょうか。これらをいろいろ試しました)

結果、下から7行目でエラーが出てしまいます。
アラートは「オブジェクトが見つかりません」というものです。
「1_photo.db」の格納場所をあちこちと移動したり、
フルパスを記述したりしましたが、全く同じエラーがでてしまいました。
また、AppleScriptの参考書を見ながら、基本的な記述内容を理解しようと
務めましたが、ところどころ断片的にはわかるものの、全体の構造がまった
く理解できません。情けないです。
大変あつかましいお願いなのですが、上記解決法とともに、
どうしてこのような記述になるのかできましたら各行の解説を
スクリプト内にインラインでお願いできませんでしょうか?
みなさまお忙しい中ご無理言いまして申し訳ありません。
何卒何卒よろしくお願い申しあげます。

Kohichi さんからのコメント
( Friday, April 19, 2002 19:50:54 )

度々もうしわけありません。手違いで途中から重複した書き込みをしてしまいました。恐れ入ります。できましたら、このメールと一つ前のメールを削除していただけますと幸いです。(不慣れなためお許しください)

Kohichi さんからのコメント
( Monday, April 22, 2002 15:16:26 )

先日、上記書き込みをしたものです。
その後、無事解決いたしました。
お騒がせいたしまして大変申し訳ありませんでした。
今後とも皆様のアドヴァイスを参考にさせていただきます。
ありがとうございました。