今回はもっとも多く利用されているHTTPによる通信について説明します。
HTTPはWebサイトを閲覧する場合に利用されています。Webブラウザでページを見る際に使われているものです。
InDesign CS3で対応しているのはHTTPだけでなくHTTPSにも対応しています(セキュアな環境での動作は確認していません)。
InDesign CS3のHTTP機能を使う前に以下の行を記述しておかないとエラーとなり動作しません。
-----------------------
if ( !ExternalObject.webaccesslib ) {
ExternalObject.webaccesslib = new ExternalObject("lib:webaccesslib");
}
-----------------------
これは最初に一度だけ実行すればよく、毎回チェックする必要はありません。
このようなチェック方法は古いJavaScript Tools Guide.pdfでは以下のように記載されています。この方法でも動作しますが、FTP接続時のファイルリスト処理などでエラーになることがありますので、上記の短い書き方をする方が安全です。また、InDesign CS3は、なるべく最新の状態にアップデートしておくようにしてください。上記の場合、バージョン5.0.2以降での動作を確認しています。
if( webaccesslib == undefined ) {
if( Folder.fs == "Windows" ) {
var pathToLib = Folder.startup.fsName + "/webaccesslib.dll";
} else {
var pathToLib = Folder.startup.fsName + "/webaccesslib.bundle";
}
var libfile = new File( pathToLib );
var webaccesslib = new ExternalObject("lib:" + pathToLib );
}
それではHTTPによる通信を行ってみます。これはInternet ExplorerやFirefox、Safariなどのブラウザが行っていることをInDesignのJavaScriptで記述することになります。と言っても難しくなく、実質4行で終わりです。
まず、new HttpConnection()のパラメータに取得したいファイルのURLを指定します。例えばYahoo JAPANのトップページのHTMLファイルを取得する場合には以下のように書きます。
http = new HttpConnection("http://www.yahoo.co.jp/index.html");
ただし、これだけでは通信も行われず読み込まれたデータもファイルも作成されません。InDesign CS3に用意されているHTTP機能はローカルディスクのどこかに読み込んだデータを保存する必要があります。その保存先はhttp.responseプロパティに保存先のファイルオブジェクトを指定します。例えばホームフォルダにtemp.htmlという名前で保存する場合は以下のように書きます。
http.response = new File("~/temp.html");
これで保存先が指定されたので以下のようにサーバーにリクエストを発行します。
http.execute();
環境によっては、ここでエラーとなってしまう場合があります。エラーとなってしまった場合には、一度マシンを再起動させてから試してみてください。また、会社内でのネットワーク環境によってはアクセスできないサイトなどがあるため、どうしても分からない場合にはネットワークの担当者に確認するようにしてください。
無事に処理されると指定された場所にファイルが保存されます。最後に以下のように書いてサーバーとの通信処理を終了させます。
http.response.close();
これで完了です。以下のサンプルはYahoo JAPANのトップページのHTMLファイルを読み込んでInDesign上に配置します