FileMaker の Web ビューアで html ファイルを相対パスで呼び出す2

FileMaker の Web ビューアでローカルの html ファイルを、相対パスで指定する方法を書いた。

実際にやってみて分かったのが、上記の方法では起動ディスク以外にファイルを置いた場合はうまくいかないということだ。起動ディスクはユーザー名がファイルパスに入ったりする特殊な状況だからだ。

そこで、起動ディスク以外にファイルを置いた場合の相対パスの指定方法を考えてみた。

環境:macOS Catalina Version 10.15.6(英語環境)、FileMaker Pro 18

VolumeAAA というドライブ上の、FolderBBB というフォルダの中に、ABC.fmp12 と abc.html があるとする。

最終的に欲しい絶対パスはこれだ。
file:///Volumes/VolumeAAA/FolderBBB/abc.html

各種関数で得られる結果は以下のようになる。

Get (FilePath):
file:/VolumeAAA/FolderBBB/ABC.fmp12

Get (SystemDrive):
/VolumeAAA/

Get (FileName):
ABC

以上を踏まえると相対パスは以下のように指定すればいい(「書き方1」とする)。

"file:///Volumes" & Middle ( Get (FilePath) ; 6 ; Length ( Get (FilePath) ) - 5 - Length ( Get ( FileName) ) - 6 ) & "abc.html”

でもこのままでは、ファイルが起動ディスクにある場合と起動ディスク以外にある場合で相対パスを書き換えなければいけない。そこで、自動で切り替えられるように、PatternCount 関数を使おう。起動ディスクでは Get (FilePath) は /Users/ を含むことを利用する。すると以下のようになる(「書き方2」とする)。

If ( PatternCount ( Get ( FilePath ) ; "/Users/" ) = "1" ;
"file:///" & Middle ( Get (FilePath) ; 6 + Length ( Get ( SystemDrive ) ) ; Length ( Get (FilePath) ) - 5 - Length ( Get ( SystemDrive ) ) - Length ( Get ( FileName) ) - 6 ) & "abc.html” ;
"file:///Volumes" & Middle ( Get (FilePath) ; 6 ; Length ( Get (FilePath) ) - 5 - Length ( Get ( FileName) ) - 6 ) & "abc.html”
)

しかしここまで書いて分かった。起動ディスクにファイルがある場合でも、システムドライブ名を入れたまま相対パスを指定してもよい。だから上記のような PatternCount 関数を使った切り替えは不要だ。書き方1でよい。

参考:
PatternCount
https://fmhelp.filemaker.com/help/18/fmp/ja/index.html#page/FMP_Help/patterncount.html


この記事が気に入ったらサポートをしてみませんか?