FileMaker で Zip 圧縮 2 (パスワード付きZip)

画像1

上の図は、ファイルの名前を変更して圧縮するだけの簡単なフローですが、定期的に実施しなければならなかったり、ファイルの数が多くなったり、オリジナルのファイルも取っておくとなると、自動化したくなってきます。

以前の記事では、BaseElements プラグインを利用していますが、今回は、 MBS プラグインを用いて、Password 付きの Zip を作成する方法をご紹介いたします。

MBS プラグインのダウンロードとインストール

MonkeyBread Software 様のサイトで MBS プラグインをダウンロードします。

ライセンスなどに関しては、直接MonkeyBread Software 様のサイトにて確認してください

次の URL を参考にしてプラグインをインストールします。


MBS プラグインで Zip を作成するには、Archive.Compress を利用します。Archive.Compress のヘルプは次の URL を参考にします。

具体的には次のように指定します。

MBS( "Archive.Compress"; Format; Filter; Destination; BasePath; List { ; Options; Password } )  

今回は、Format に Zip を指定し、Filter には deflate、Destination には生成される Zip 名、BasePath には、ベースとなるファイルのパス ( 今回はテンポラリパス )、List には、Zip 化したいファイル名を指定します。

注意が必要なのは、FileMaker のパスを標準のパスに変換が必要なことです。

FileMaker 19 で ConvertFromFileMakerPath という関数が出てきたので、今回はそれを利用しています。

Archive.Compress を利用すれば、Password 付きの Zip を作成することができます。


# 
ウインドウの固定
ユーザによる強制終了を許可 [ オフ ]
# 
変数を設定 [ $version ; 値: MBS ( "version" ) ] 
If [ $version = "?" ] 
	カスタムダイアログを表示 [ "確認" ; "MBS プラグインをインストールしてください。" ] 
	現在のスクリプト終了 [ テキスト結果: False ] 
End If
# 
If [ not IsEmpty ( Zip::オリジナルファイル ) ] 
	変数を設定 [ $name ; 値: Lower ( 	GetContainerAttribute ( 		Zip::オリジナルファイル ; 		"filename" 	) ) ] 
	変数を設定 [ $path ; 値: Get ( テンポラリパス ) & $name ] 
	フィールド内容のエクスポート [ Zip::オリジナルファイル ; 「$path」 ; フォルダを作成: オフ ] 
	ファイルを挿入 [ ターゲット: Zip::リネームされたファイル ; 「$path」 ] 
	変数を設定 [ $result ; 値: MBS ( 	"Archive.Compress" ; 	"zip" ; 	"deflate" ; 	$name & ".zip" ; 	ConvertFromFileMakerPath ( 		Get ( テンポラリパス ) ; 		Case ( 			Get ( システムプラットフォーム ) = 1 ; 			PosixPath ; 			WinPath 		) 	) ; 	$name ; 	"zip:encryption=aes128" ; 	"1234" ) ] 
	フィールド設定 [ Zip::圧縮されたファイル ; $result ] 
Else
	フィールド設定 [ Zip::リネームされたファイル ; "" ] 
	フィールド設定 [ Zip::圧縮されたファイル ; "" ] 
End If
レコード/検索条件確定 [ ダイアログあり: オフ ] 

少しでも参考になれば幸いです。

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