はじめに
対象読者
- Claris FileMaker ユーザ
- fmp プロトコルリンクを生成したい人
- ちょっとした手間をかけるのも嫌というめんどくさがりやな人
fmp プロトコルとは
URL を使用して、共有ファイルまたはローカルファイルを開く、またはファイル内のスクリプトを実行することができます。FileMaker Pro または FileMaker Go をインストールすると、次の URL スキーマがオペレーティングシステムに登録されます。これにより、これらのスキーマを使用する URL は FileMaker Pro または FileMaker Go により処理されます:
fmp – 最後にインストールされたアプリケーションバージョンがこのスキーマの URL を処理します。
対応したいこと
- ファイル名に日本語等のマルチバイト文字が含まれていても問題ないようにする
本題
計算式
- 以下のような計算式を書くことで、生成できる
- Let で上書きしていくことで可読性が高くなるが、ワンライナー的に書いても構わない
Let (
[
filepath = Get ( ファイルパス );
filepath = GetAsURLEncoded ( filepath );
filepath = Substitute ( filepath ; "fmnet:%2F" ; "fmp://" );
filepath = Substitute ( filepath ; "%2F" ; "/" )
];
filepath
)
クリップボードへ格納
- レイアウト上へグローバルフィールドを設置しておいて、一度そこへ変数を格納し、コピーさせることで、手軽にクリップボードへ格納できる
-
コピー
というステップが、以下の条件でないと正しく動作しないので要注意- レイアウト上にフィールドが存在している
- そのフィールドにはカーソルが入る状態である
-
- たとえば以下は
トップ
というテーブルにgtmptxt1
というグローバルフィールドが存在している状況で、そのフィールドが設置されているレイアウトで動作されることが前提となる- なので、より確実丁寧にするには、以下のようにやっておくとヨシ
- 手前でレイアウトを切り替えるとか、
- あるいは一時的にウインドウを開いて閉じるようにするとか、
- 格納し終わったらグローバルフィールドの中身を空にする処理を入れるとか……
- なので、より確実丁寧にするには、以下のようにやっておくとヨシ
応用
Slack のブックマークへ登録
- Slack の各 channel には
Add a bookmark
がある(日本語環境だと関連ページを追加する
というらしい ) - ここには
http/https://
だけでなくfmp://
も登録できるので、ワンクリックで FileMaker ファイルを開くことができるようになる
スクリプトの実行
- URL に引数をつけるとスクリプトを実行したり、さらにそのスクリプトへ引数を渡したりすることもできる
"?script=display_opts_id" & "¶m=" & users::id
- この場合、
options
という変数を別途定義して、グローバルフィールドに値を格納する際に、$filepath & $options
を含めてあげるなどすればよい - なお、実行するスクリプトへ引数を複数渡したい時は
param
だと一つきりしか渡せないので&$変数=値
を複数渡してあげるとよい
おわりに
感想
- Slack のブックマークに追加できることを知った嬉しさのノリで、つい、前提となるところからの記事を書いてしまったが、勢いってだいじだと思います。