このページの本文へ

Adobe BridgeのJavaScriptでXMLを操作しよう (4/4)

2010年01月25日 16時55分更新

文●古籏一浩

  • この記事をはてなブックマークに追加
本文印刷

記事のタイトルをファイルに保存する

 RSSから記事のタイトルだけを抜き出せたので、今度はテキストファイルとして保存しましょう。ファイルへの書き込みは、ファイルの読み込みとよく似た手続きを採ります(前回記事)。

 まず、new File()を使って保存先のファイル名を指定します。パス付きにすれば、指定のフォルダにファイルを保存できます(ただし、ネットワーク接続されたドライブはうまくいかない場合があります)。

 new File()によってファイルオブジェクトが生成され、生成されたファイルオブジェクトのopen()メソッドの引数に"w"を指定すると書き込みモードになります。すでにファイルが存在する場合には上書きされ、ファイルが存在しない場合には新たにファイルが作成されます。書き込み可能な場合にはopen()は戻り値として「true」を返します。書き込み許可されていないフォルダや、保存先のパスが正しくない場合の戻り値は「false」です。まとめると以下の手順になります。


var fileObj = new File("保存先ファイル名");
if (fileObj.open("w") == true){
 ファイルへの書き込み処理
}


 ファイルにテキストを書き込むには、ファイルオブジェクトのwrite()メソッドを使います。write()の引数に保存するテキストを指定します。なお、Bridgeのwrite()メソッドではバイナリデータの書き込みはできません。

 ここまでの処理をまとめたものがサンプル06です。サンプル06では保存先とファイル名が固定されていますが、ファイル保存ダイアログを使って保存先をユーザーに選択してもらうこともできます。ファイル保存ダイアログはFile.saveDialog()で表示でき、ファイルが選択されるとファイルオブジェクトが返されます。サンプル06を改良し、ファイル保存ダイアログを表示するようにしたものがサンプル07です。

抽出したタイトルをテキストファイルに保存できます。サンプル07では保存ダイアログが表示されます

保存されたテキストファイルを開くとすべてのタイトルが表示されます


●サンプル06


#target "Bridge"
// Http, Ftpが使えるようにする
if ( !ExternalObject.webaccesslib ) {
    ExternalObject.webaccesslib = new ExternalObject("lib:webaccesslib");
}
// 取得先のURLと保存先のパスを指定
var url = "http://www.ascii.jp/cate/1/rss.xml";
var filepath = "~/rss_ascii.xml";
var savepath = "~/rss_title.txt";
// Webサーバーへ接続
var http = new HttpConnection(url);
http.response = new File(filepath);
http.execute();
http.response.close();
// 読み込んだRSSのタイトルをファイルに保存
var fileObj = new File(filepath);
if (fileObj.open("r")){
    var txt = fileObj.read();
    var rssData = new XML(txt);
    var text = "";
    var count = rssData.channel[0].item.length();
    for(var i=0; i<count; i++){
        var newsTitle  = rssData.channel[0].item[i].title;
        text = text + newsTitle + "\n";
    }
    var fileObj = new File(savepath);
    if (fileObj.open("w") == true){
        fileObj.write(text);
        fileObj.close();
        alert("ASCII.jpの記事のタイトルを保存しました");
    }else{
        alert("ファイルを保存できません");
    }
}


●サンプル07


#target "Bridge"
// Http, Ftpが使えるようにする
if ( !ExternalObject.webaccesslib ) {
    ExternalObject.webaccesslib = new ExternalObject("lib:webaccesslib");
}
// 取得先のURLと保存先のパスを指定
var url = "http://www.ascii.jp/cate/1/rss.xml";
var filepath = "~/rss_ascii.xml";
var savepath = File.saveDialog("保存ファイル名を入れて下さい", "");
if (savepath){
    // Webサーバーへ接続
    var http = new HttpConnection(url);
    http.response = new File(filepath);
    http.execute();
    http.response.close();
    // 読み込んだRSSのタイトルをファイルに保存
    var fileObj = new File(filepath);
    if (fileObj.open("r")){
        var txt = fileObj.read();
        var rssData = new XML(txt);
        var text = "";
        var count = rssData.channel[0].item.length();
        for(var i=0; i<count; i++){
            var newsTitle  = rssData.channel[0].item[i].title;
            text = text + newsTitle + "\n";
        }
        var fileObj = new File(savepath);
        if (fileObj.open("w") == true){
            fileObj.write(text);
            fileObj.close();
        }else{
            alert("ファイルを保存できません");
        }
    }
}



 次回はBridgeで読み込んだRSS記事のタイトルをPhotoshop上に表示します。BridgeとPhotoshopを連携させることで、いろいろな可能性が見えてきます。どうぞお楽しみに。

前へ 1 2 3 4 次へ

この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています