FileMakerでMBSプラグインを使い、複数ファイルを圧縮する方法、のメモです。
使用場面はたとえばYahooショッピング出店時の画像アップロードなど。Y!では商品画像の登録に「Zip圧縮したファイル」を求められます。これは結構に手間がかかる作業なので自動化できれば楽になります。
使用する関数
ZipFile.CompressFiles
MBSプラグインの「ZipFile.CompressFiles」を使います。
コマンドの記述方法
MBS( “ZipFile.CompressFiles”; SourceFolder; ZipFilePath; FileList; Overwrite; CompressionLevel )
- SourceFolder ・・・ 圧縮したいファイルが格納されているフォルダのパス
- ZipFilePath ・・・ 圧縮後のZipファイルのパス(ファイル名も含める)
- FileList ・・・ 圧縮したいファイル名のリスト。パスは含めずファイル名のみを改行区切りで羅列する
- Overwrite ・・・ Zipファイルがすでに存在する場合に上書きするかどうか。0:上書きしない 1:上書きする 2:既存Zipファイルに追加する
- CompressionLevel ・・・ 圧縮レベル 0:圧縮無し 9:最大圧縮(初期値)
記述方法・実例
MBS( “ZipFile.CompressFiles”; “C:\Users\Administrator\Documents”; “C:\Users\Administrator\Desktop\test.zip”; “MBSLogo100.png¶test.png¶other.jpg”; 0; 9 )
この場合は「C:\Users\Administrator\Documents」にある「MBSLogo100.png と test.png と other.jpg」の3種のファイルを「デスクトップにtest.zip」として最大圧縮して保存する、との意味になります。
この部分を変数にすると異なるシーンで使いまわしができたり、可読性を上げたりできます。
その他役立つ関数
ファイルの圧縮と合わせて役に立つ関数など・・
ファイルサイズを取得する
ファイルサイズを取得すると、圧縮後のファイルサイズをコントロールすることができるように。Yahooショッピングの場合は25MB(FTPでアップするなら50MB)の制限があるので超えないように調整したりといった使い方が考えられます。
FilesFileSize
https://www.mbsplugins.eu/FilesFileSize.shtml
ファイルを削除する
新たに「圧縮ファイル」を作った後の各ファイルを削除しておくのに便利。その場で削除しておかないと、後から要不要の区別がつきづらくなるためです。
Files.Delete
https://www.mbsplugins.eu/FilesDelete.shtml
フォルダごと削除する
圧縮に使ったファイルが複数あるならフォルダごと削除するのが手っ取り早くて楽です。
Files.DeleteFolder
https://www.mbsplugins.eu/FilesDeleteFolder.shtml