03/11 FileMaker Pro v11 AppleScript用語辞書に変更なし
満を持して発表されたFileMaker Pro v11。お試し版もダウンロードできるようになっているので、さっそくAppleScript用語辞書を確認。
……v10.5から変更された点は皆無でした。FileMaker Proもv7で若干の変更が加わったほかはまったく機能に変化がなく、もう少し何かできてもいいような気もするのですが……。
満を持して発表されたFileMaker Pro v11。お試し版もダウンロードできるようになっているので、さっそくAppleScript用語辞書を確認。
……v10.5から変更された点は皆無でした。FileMaker Proもv7で若干の変更が加わったほかはまったく機能に変化がなく、もう少し何かできてもいいような気もするのですが……。
FileMaker Proのデータベース内のオブジェクト・フィールドに貼り込まれた画像データを取り出すAppleScriptです。
ただし、FileMaker Proには画像データの保持方法に2種類あり、その画像のパスを保持して実データをDB内に取り込まないものと、コピー&ペーストなどですべての画像データをオブジェクト・フィールドに入れるものです。
前者では、DBの容量がふくらまないというメリットがあるものの、画像ファイルをリネームしたり別の場所に移動するとリンクが切れます。

後者では、元画像をリネームしようが削除しようがDB上の画像は保持されますが、DBの容量がふくれあがります。
本AppleScriptでは画像のパスを保持している場合の実行結果を示しています。全データをDB上に保持するタイプのフィールドからデータを取り出したらどうなるかは……実際に試してみてください。
| スクリプト名:FMのDBから画像を取り出す |
| set dbName to "fmTest.fp7" tell application "FileMaker Pro" tell database dbName tell table "fmTest" tell record 1 set a to contents of field "code" set b to contents of field "img" end tell end tell end tell end tell log {a, b} (* ABC, file Home:idcs2_1.jpg*) |
FileMaker Proのオブジェクト・フィールドに画像を入れるAppleScriptです。FileMaker Proはv7から最新のv10までAppleScript用語辞書が同じなので、AppleScriptからコントロールするかぎりは、できることは一緒です。テストはFM v8で行いました。

このように、オブジェクト・フィールドを定義して……

実際にフィールドをレイアウト上に配置。FMをAppleScriptから操作する場合、レイアウト上に表示されていないフィールドの操作が行えないので、注意が必要です。
そのため、ASから操作を行う場合、操作対象のフィールドがすべて配置されているレイアウトに切り替えてから処理を行う必要があります。
FM v7以降、外部からASでコントロールするよりも、FMのスクリプトステップ内にAppleScriptを書いておくほうが驚異的なスピードを叩き出す(画面のリドローなども省略になる)ようになりましたが、この「操作対象のフィールドは表示中のレイアウト内に存在していなければならない」という原則は変わりません。
そのため、前述のとおり「すべてのフィールドを配置したAS処理用のレイアウト」にレイアウト表示を切り替えるなどの措置を講じている次第です。
ちょっとめんどくさい仕様なので、この制限は撤廃してほしい気がします。

本AppleScriptを実行した後の画面です。ただし、見ただけでは分からないのですが……FileMaker Proには画像の保持方法が2種類あり、コピー&ペーストで貼り込むと画像のデータがすべて貼り込まれ……このようにAppleScriptから操作したときにはリンク情報が貼り込まれます(データの実体は入りません)。コピー&ペーストで画像を貼り込んでいくと、その数によってはDBの容量がたいへん大きくなるため注意が必要です。
| スクリプト名:FMのDBに画像を突っ込む |
set aFile to choose file set dbName to “fmTest.fp7“ tell application “FileMaker Pro“ tell database dbName tell table “fmTest“ tell record 1 set contents of field “code” to “ABC“ set contents of field “img” to aFile end tell end tell end tell end tell |
FileMaker Pro v9でキーとなるフィールドを指定してソートを行います。
(more…)
FM v9で、オープン中の(最前面の)データベースのテーブル1の、特定のレコード(最初のレコード)における特定フィールドのデータサイズを取得します。
(more…)
FMv9で、オープン中の(最前面の)データベースの、テーブル1に対してshow命令によって検索を行います。
(more…)
FM v9で、オープン中の(最前面の)データベースの、レイアウトの名称一覧を取得するサンプルです。
(more…)
FM v9で、オープン中の最前面のデータベースに含まれるレイアウト(画面)を数えます。
(more…)
FM v9で、database 1(document 1)というのは最前面のデータベースを指すことになります。
(more…)
FileMaker Proで、オープン中のデータベース(のうちの最前面にあるもの)の中にいくつテーブルが存在するかをカウントします。
(more…)
FileMaker Proは6までと7以降で別物と考えてよいほど変わりました。AppleScriptから見ると、データベース(書類)の中に複数のテーブルを持てるようになったことと、1つのデータベースのウィンドウを複数開けるようになったこと、FileMaker Scriptステップの中にAppleScriptを記述して実行すると、画面を書き換えないでScriptを実行するため、外部からFileMakerをコントロールするよりもはるかに高速に制御できるようになりました。
(more…)