某クライアント (不動産業) の案件で、『CSV を 吐き出して、FTPで (あらかじめ規定された) Webサーバ上のフォルダ にアップロードする』というものがありました。
そのクライアントは、社内業務に FileMaker を使っているので、FileMaker (Mac OS X) のスクリプトで実行したいわけです。
条件は、以下の通り。
- CSVファイルの文字コードは、UTF-8 / 改行コードは、LF。
- CSVファイル名は、YYYYMMDDhhmmss_テーブル識別子.csv の形式。
- CSV出力と同時にFTPアップロードする。
- FTPユーザ名/パスワードなどのFTP関連情報は、FileMakerアクセスからは隠す。
- Macを少しだけ使えるスタッフが、Macで、FTPサーバアドレス/FTPユーザ名/パスワードなどのFTP関連情報 をいつでも修正できるように。
1 は、普通にCSV(UTF-8)書き出し後に (Mac OS X での出力なので 改行コードが CR なので LF に修正するために)
$ perl -p -e ‘s/\r/\n/g’ < CR.txt > LF.txt
とやってやればOKですし、なんなら、XML FMPRESULT 指定で…という方法もあります。
2 は、
テーブル識別子を $tableid というグローバル変数に格納しておいて、
Let ( [
$YYMMDD = GetAsText ( Year ( Get ( 日付 ) ) * 10000 + Month ( Get ( 日付 ) ) * 100 + Day ( Get ( 日付 ) ) ) ;
$hhmmss = Right (
"000000" & GetAsText ( Hour ( Get ( 時刻 ) ) ) * 10000 + Minute ( Get ( 時刻 ) ) * 100 + Seconds ( Get ( 時刻 ) ) ;
6
) // Right
] ;
$YYMMDD & $hhmmss & “_” & $tableid & “.csv”
) // Let
とかやってやればOKでしょう。
3 も、4 の条件がなければ、シェルコマンドを do shell script な AppleScript ではじいてやればOKのはずなのですが、この場合、AppleScript内に、FTPユーザ名/パスワードなどの情報を書き込むことになります。
では、FTP情報を埋め込んだ AppleScript をアプリケーション形式で保存しておいて、それを叩いてやれば良さそうなものですが、
5 の条件でいう『Macを少しだけ使えるスタッフ』には、AppleScript の編集は、少し荷が重すぎるようです。
…で、「どうやって、FTPアップロードすべ?」と悩んでいたわけです。
いっそのこと、Transmit 4 などの FTPクライアントソフトの AppleScript 機能を使って…という『一応の解』が出ていたわけですが…ふと「Automator でどーよ!?」と思いました。
「Automator なら Automator のフロー側に FTPユーザ名/パスワードなどをリテラルで格納すれば、FTP関連情報をFileMaker アクセスからは隠せるし、Automatorのワークフローの修正なら、『Macを少しだけ使えるスタッフ』にも修正可能!」
探したところ、Upload to FTPという Automator Action がありました。
これを使って、CSV書き出し用フォルダに、フォルダアクション として設定すれば、オールOK!
具体的な手順の説明は、また後日。




