ファイルメーカーでメディア管理システムを作る話の続編です。スクリプトの実例を少し。
このページ内の見出し
スクリプト
他のスクリプトの実例いきます。まずは基本のところから。アプリケーションメニューからいつでも実行できることばかりですがスクリプトに仕込んでボタンやポップアップメニューから動作させれば楽ですよね。
フォルダをインポート
インポートメニューからフォルダを選んで、ダイアログで各種取り込みの設定するといつでもフォルダをインポートできます。フォルダ指定は行わず、インポート設定だけガッチリ指定して保存します。このスクリプトを実行させればフォルダ選択のダイアログが出てくるのでフォルダを選びます。あとは自動で全部やってくれます。
このスクリプトでは、まず最初に「全レコードを表示」します。それからインポートしますが、インポート設定では「照合フィールドを元に更新、レコードがないものは新規取り込み」と指定します。すでにデータ化したフォルダの追加インポートを想定するとこうなります。最初に「全レコード」を表示するのは照合フィールドを照合するためです。表示していないとないものとして重複データを取り込んでしまいます。
各種挿入(ムービー、ファイル、画像)
イメージフィールドを選択してメニューから「挿入」を選ぶことをスクリプトで自動化させボタンに仕込みます。何となれば、「イメージフィールドを選択する」ことから自動化させます。
スクリプトは「フィールドへ移動(オブジェクトフィールドに)」次に「挿入」です。挿入は「ピクチャを挿入」「ムービーを挿入」「ファイルを挿入」と、スクリプトステップが分かれますので同じような三種類のスクリプトを作っておきました。もちろん、ポップアップメニューで「ピクチャを挿入/ムービーを挿入/ファイルを挿入」と、選ぶだけで実行させるためです。
あ、これはさっき例に挙げたムービーのところですね。これでした。
ムービー・画像・ファイルを再挿入
メディア管理システムを使っていると時々人為的不手際も起きます。レコードはすでにあるのにイメージフィールドにちゃんと挿入されていないということもちょくちょく起きました。ファイル名やファイルパスもすでにあります。画像またはムービーだけを再度挿入し直したい、そんな需要がわりとあることを発見したので、対処します。
まずファイルパスの確認です。ファイルパスがあってオブジェクトだけを再挿入したいのか、ファイルパスはあるけど間違ってるあるいはオリジナルの場所が変わってパスも変わるから再挿入したいのか、あるいはパスフィールドが空とか。まあ、いろんなパターンに対処したスクリプトを作るしかないですね。ifで分けるというより、ダイアログ出してあげるのがいいかな。どういう処理をするのかを決めてからそれぞれスクリプトステップ書いていきます。
パスがあってオブジェクトだけを再挿入したいときは「挿入」スクリプトステップのソースファイルの指定にパスフィールドを指定すればいいですね。パスも一緒に取得したいときはソースファイル無指定にしてオープンダイアログが出るようにしておきます。
先ほどと同じく「ファイル」「ピクチャ」「オーディオ/ビデオ」の三種類のスクリプトを作って、ポップアップメニューに仕込んじゃいましょう。
AppleScriptと組み合わせる
すいません、ここからはMac専用のお話になります。AppleScriptを利用して簡単なファイル操作を行います。
ファイルパス変換(Mac)
まず準備というか、事前にFileMakerが作成するパスをMacで利用できる形に変換して格納するフィールドを用意します。フィールドタイプは計算でもいいですね。FileMakerのファイルパスを書き換えます。
If ( not IsEmpty ( ファイルパス ); Substitute ( ファイルパス ; ["filemac:" ; "/Volumes"]; ["moviemac:" ; "/Volumes"]; ["image:" ; "/Volumes"]; ["file:" ; "/Volumes"] ) )
(この計算式はかなり適当で未完成な感じですのでこのままコピペして使おうと思わないでください。いつかちゃんとしたのを書きます)
なんでこんなフィールドを用意するのか、AppleScriptと組み合わせてファイルを操作したいのでAppleScriptが理解出来るパスに変換してあげるのです。
ここから唐突にAppleScriptコマンド教室ですが、私もAppleScriptはぜんぜんわかりません。まじわかりません。知ってるコマンドの最小限の使い方以外さっぱりです。でもまあ、この程度でも使い勝手は劇的アップ。
Finderで表示 AppleScript
レコードで編集中のメディアをFinderに表示したいときってありますよね。AppleScriptのスクリプトは例えばこうです。
tell application "Finder" activate select POSIX file "パス" end tell
フィールドで変換したパス、Mac用と言ってもじつはUNIX用なんです。AppleScriptでは今時のUNIX風のパスを扱うときはPOSIXと指定してやる必要があるんですって。旧来の書き方はちょっと面倒なんですよ。「file “ファイル名.txt” of folder “フォルダ名” of folder “フォルダ名” of disk “MacHD”」みたいな書き方です。わかりやすいけど面倒っていう。
このAppleScriptのパス部分を、Mac用に変換済みのファイルパスに置き換える計算フィールドをFileMaker内でひとつ作成しました。
Let ( $1 = ファイルパスのMac用変更 ; "tell application \"Finder\" " & "¶" & "activate" & "¶" & "select POSIX file " & " \"" & $1 & "\" " & "¶" & "end tell" )
計算式の中にテキストとして「” “」のような計算式とごっちゃになるような文字列があるときは、その直前に「\」を置いて式から除外してやれねばなりません。だから計算式はこのように無駄に長いものになります。
スクリプトではなくフィールドとして作ったのは、スクリプトステップ「AppleScript実行」からフィールドを指定するだけで済むからですが、もちろんわざわざフィールドなんか作成せず、スクリプト内に記述するだけでもいいと思います。個人的にフィールドだと確認しやすい、変更しやすい、ってだけですので真似しなくてもいいです。
ということで、このスクリプトをボタンに仕込むなりポップアップに仕込むなりします。「Finderで表示」がすぐにできます。
情報を見る AppleScript
ついでに「情報を見る」を組み合わせたりもします。
上のAppleScriptに続けて以下を合体させます。Finderで表示しつつ情報を見るウインドウが現れます。なんて素敵!
ムービーファイルを編集しているときなんかに重宝します。情報を見るを参照しながら手入力することもよくあります。
tell application "System Events" keystoroke "i" using command down end tell
情報を見るを表示するコマンドがよくわからないので無理矢理キーストロークcommand+i をやらせているだけという乱暴なスクリプトでございます💦
一応、計算フィールドでどう変換したかというとこうですね。
Let ( $1 = ファイルパスのMac用変更 ; "tell application \"Finder\" " & "¶" & "activate" & "¶" & "select POSIX file " & " \"" & $1 & "\" " & "¶" & "end tell" & ¶ & "tell application \"System Events\" " &¶& "keystroke \"i\" using command down" & ¶ & "end tell" )
ファイルを開くAppleScript
ファイルを開くというAppleScriptも重宝します。FileMakerがプレビューできないmovやmkvファイルなんかは直接デフォルトアプリでオープンさせますね。
パスがファイル名まで含むならそのファイルに対応するデフォルトアプリで開きます。
ファイル名でなくフォルダ名で終わらせていれば、フォルダが開きます。
tell application "Finder" activate open POSIX file "パス" end tell
さっきから同じですが、FileMakerの計算フィールドではこんなふうになります。
Let ( $1 = ファイルパスのMac用変更 ; "tell application \"Finder\" " & "¶" & "activate" & "¶" & "open POSIX file " & "( \"" & $1 & "\" )" & "¶" & "end tell" )
と、まあこんなふうに単純なAppleScriptをFileMakerの計算式に置き換えるだけのことで、メディア管理システムは本格的な使用に答えられる力を手に入れるのです。
次のページはオマケで、動画サムネイルを無理矢理作るお話です。
FileMakerでメディア管理 5 かんたん動画サムネイル
ここに書いてあることを鵜呑みにしないでください。時が経ち、足りないことがあったり、もっと効率の良いやり方があると判りました。パスやその変換、AppleScriptに送る方法など、新しいほうの記事を参考にしてください。
AppleScriptに関して・・・FileMakerからターミナルコマンドを送り込む二つの方法 あるいはこちらの記事 Macで実行もできるFileMakerコード管理
パスに関して・・・ FileMakerでメディア管理 – オブジェクトのパス(近日更新)
“FileMakerでメディア管理 4 スクリプト” への1件の返信