クリエイター手抜きプロジェクト[192]InDesign CS3編 InDesign CS3でFTP、HTTP通信を行う(7)/古籏一浩

投稿:  著者:  読了時間:6分(本文:約2,800文字)


今回でInDesign CS3を使ったFTP、HTTP通信のネタは終わりです。

FTPサーバー上にあるファイル内容が更新されたり、新たにファイルが追加された場合には、ファイル一覧を取得した後、処理を行う必要があります。InDesign CS3の場合、更新日時などファイルに関する情報はFTPオブジェクトのいくつかのプロパティに分割されて格納されます。

まず、ファイル一覧はls()により取得することができます。ls()の戻り値はtrueまたはfalseで、取得に成功した場合にはtrue、失敗した場合にはfalseとなります。

これとは別にFTPの場合、パッシブモードを設定しておく必要があります。これはネットワーク環境に依存します。パッシブモードは、FTPオブジェクトのpassiveプロパティにtrueまたはfalseを指定します。trueであればパッシブモードになります。ls()でファイル一覧を取得したまま、次の処理が行われない場合には、パッシブモードの設定を確認してみてください。



ls()によりファイル一覧を取得できた場合には、それぞれ以下のFTPオブジェクトのプロパティにファイル情報が格納されます。

files ファイル名/ディレクトリ名
flags 種類(ファイルかディレクトリかなど)
sizes ファイルサイズ (バイト数)
dates ファイルの作成日 (Dateオブジェクト)

サンプルは、FTPサーバー上にあるホームディレクトリの一覧を取得しInDesign上に配置するものです。

ls()によるファイル一覧の取得を行う場合には、必ず以下の方法でWeb Accessライブラリを読み込ませてください。古いJavaScript Tools Guideのサンプルコードでは、エラーになってしまうことがあるためです。


if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib = new ExternalObject("lib:webaccesslib");
}


また、FTP処理でエラーが発生した場合には、FTPオブジェクトのerrorプロパティを参照することで、どのようなエラーなのかを確認することができます。エラーの中でも、タイムアウトに関しては注意が必要です。タイムアウトまでの時間は、FTPオブジェクトのtimeoutプロパティで秒数を指定します。特に設定しない場合には5秒となっており、ネットワーク環境や状況によってはタイムアウトとなってしまうこともあります。うまく接続できない場合には、タイムアウトまでの時間を120秒や180秒など長めに指定してみてください。


●サンプル
// FTPサーバーにあるファイル一覧を取得しInDesign上に配置する
(function(){
var CR = String.fromCharCode(13);
var tfObj = app.activeDocument.textFrames.add();
tfObj.visibleBounds = ["2cm", "3cm", "10cm", "14cm"];
var fileList = getFtpFilelist("ftp://www.openspc2.org","adobe","indesign","./",);
for (var i=0; i< fileList.files.length; i++){
tfObj.contents += fileList.files[i] + CR;
}
})();

// FTPを使って指定されたサーバーのディレクトリにあるファイル一覧を取得し返す
function getFtpFilelist(sURL, userName, password, dir){
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib = new ExternalObject("lib:webaccesslib");
}
var ftp = new FtpConnection(sURL);
ftp.username = userName;
ftp.password = password;
ftp.ftpDir = dir;
ftp.passive = false; // パッシブモードの設定
var flag = ftp.ls();
if (flag == false){
alert("エラーです。ファイル一覧を取得できません");
}
ftp.close();
return ftp;
}


これで、やっとInDesign CS3の通信ネタが終わりですが、このような機能を利用することでより自動化を進めることが可能になります。Webサーバーなどを用意したりせずとも、InDesign CS3で可能になるわけです。クライアントから送信されたデータがあれば自動的にチェックしてレイアウトするなど、使い方次第で強力なものになると思います。

【古籏一浩】openspc@po.shiojiri.ne.jp
< http://www.openspc2.org/ >

昨年購入したSeagateの1.5TBのハードディスク、例のファームウェアが駄目なやつでした。幸い箱に入ったままで使っていませんでしたので、トラブルに巻き込まれることはありませんでしたが。
< http://gigazine.net/index.php?/news/comments/20090119_barracuda_7200_11/ >
機械ものは滅多に不良品にあたらないはずなのに。新サーバーも1.5TB HDDを装着予定だったので、しばらく稼働しない状態に。
ということで、映像素材などの追加は当面先になりそうです。

・AfterEffects CS4自動化作戦
< http://www.openspc2.org/book/AfterEffectsCS4/ >
CS4のScripting Guideはどこに? AdobeのWebサイトには見あたらない……
(CS3のままになっているようですが)

photo
組版時間を半減する! InDesign自動処理実例集
(株)シータス
技術評論社 2008-11-25
おすすめ平均 star
starプログラミング経験のない方も気軽に挑戦してほしいです

1ランク上の技を身につけるInDesignの強化書 [+DESIGNING Professional Bible] (マイコミムック) (MYCOMムック +DESIGNING Professional Bi) InDesign 逆引きデザイン事典[CS3/CS2/CS対応] InDesign CS3の仕事術 Adobe InDesign「文字組み」徹底攻略ガイド InDesignレイアウト手帖



photo
改訂第4版 JavaScript ポケットリファレンス
古籏 一浩
技術評論社 2006-10-18
おすすめ平均 star
starJavaScriptを使ったプロジェクトのお供に是非
starJavaScript仮免者以上の方へ
starバランスの良いバイブル
star中級者向けです。

[改訂版] PHP ポケットリファレンス (Pocket reference) 改訂新版 SQLポケットリファレンス (Pocket reference) スタイルシート ポケットリファレンス (Pocket reference) 改訂第5版 オールカラー  HTML ポケットリファレンス (POCKET REFERENCE) 正規表現ポケットリファレンス (POCKET REFERENCE)



photo
Ajax逆引きクイックリファレンスWeb2.0対応for Windows & Macintosh
古籏 一浩
毎日コミュニケーションズ 2006-03
おすすめ平均 star
starAjaxの基本的な用途がわかる
starみやすくわかりやすい
star入門は不要な人向け
star知ってる人は使いやすい
starサンプル多いのが良い

JavaScript逆引きクイックリファレンスfor Windows & Macintosh Google Maps API逆引きクイックリファレンス―WEB2.0対応 Ajaxイン・アクション PHP逆引きクイックリファレンス―PHP4/PHP5対応 XML逆引きクイックリファレンス―XML1.0(3rd Edition)対応

by G-Tools , 2009/02/02