Skyward Design

Blog Webクリエイターの日々の覚え書き

ホーム > Blog

最近の記事

PSDからテキストデータをテキストファイルに書き出すスクリプト

Posted by Hideki at 2010年2月14日 14:42

タグ:

PSDファイル内のテキストレイヤーの中身を、テキストファイルに書き出すスクリプトを書いてみました。仕事で時々PSDからテキストを取らなければならない場合があり、なんとか効率出来ないものかということから、実験的に試してみました。

一応書き出すことは出来たのですが、速度面で難があり、ファイルによっては5分~10分かかってしまうこともあるようです。書き出したい物が出てくる度にfile.write()を呼び出す処理を変更しても、あまり変わらない感じがしました。今後の課題です。

参考までに、スクリプトを掲載します。拡張子「.jsx」で保存し、"C:\Program Files\Adobe\Adobe Photoshop CS3\プリセット\スクリプト"あたりに入れると使えます。

  • 本スクリプトを使用して何らかの問題が生じた場合も、責任は負いかねますのでご了承ください。

テキストエクスポート スクリプト例

/* テキストエクスポート.jsx
 * Skyward Design JavaScript Library for Photoshop
 * PSDファイル内のテキストレイヤーの内容を、テキストファイルに書き出します。
 * 
 * Version 1.0.2
 * Copyright (C) 2010 Hideki Abe
 */
(function(activeDocument) {
    // オプション設定
    var options = {
        // 改行
        linefeed : String.fromCharCode(13),
        
        // セパレート文字列
        separator : "------------------------------------------------------",
        
        // 出力レイヤー接頭語
        // Version 1.0.2では未使用
        targetname : "w_"
    };
    
    function main() {
        var fileName = File.saveDialog("保存するファイル名を入れてください");
        if(fileName) {
            // ファイルを作成し、テキストレイヤー書き出し処理へ
            var file = new File(fileName);
            var openFlag = file.open("w");
            if(openFlag) {
                // ファイル情報生成
                var date = new Date();
                var fileInfo = activeDocument.name + options.linefeed + "Generated: " + date + 
                               options.linefeed + options.linefeed + options.linefeed + 
                               "********** Output Start **********" + options.linefeed + options.linefeed;
                file.write(fileInfo);
                
                // レイヤー出力
                _scanLayer(file, activeDocument);
                file.close();
                alert("書き出しが完了しました。");
            } else {
                alert("ファイルが開けませんでした。");
            }
        } else {
            alert("処理を中止します。");
        }
    }
    
    // レイヤースキャン・書き出し
    function _scanLayer(file, target, layerpath) {
        // Layersオブジェクト取得
        var targetLayers = target.layers;
        var nLayer = targetLayers.length;
        var path = layerpath || "root";
        
        for(var i = 0; i < nLayer; i++) {
            if(targetLayers[i].typename === "LayerSet") {
                // レイヤーセットの場合
                // レイヤーセット情報を出力後再帰処理
                var tmpPath = path + " > " + targetLayers[i].name;
                var text = options.separator + options.linefeed + 
                           "Layerset: " + targetLayers[i].name + options.linefeed + 
                           "  Path: " + tmpPath + options.linefeed + 
                           options.separator + options.linefeed;
                file.write(text);
                _scanLayer(file, targetLayers[i], tmpPath);
            } else if(targetLayers[i].kind === LayerKind.TEXT) {
                // テキストレイヤーの場合
                var text = targetLayers[i].textItem.contents;
                file.write(text + options.linefeed + options.linefeed);
            }
        }
        
        file.write(options.linefeed);
    }
    
    // Dispatch
    main();
    
})(activeDocument);

ウェブサイトテンプレート(MT5)でGoogle Analyticsのコードを管理

Posted by Hideki at 2009年12月26日 13:15

タグ:

Movable Type 5を使用しているウェブサイトにおいて、Google Analyticsのトラッキングコード(ga.js)を入れる場合、ウェブサイトテンプレートにGoogle Analyticsのコードを記述したテンプレートモジュールを作成し、配下のブログで作成したテンプレートモジュールを読み込ませると、スマートに管理できます。


ウェブサイトテンプレートの管理画面。「GoogleAnalytics」という名称でテンプレートを作成している。

Google Analyticsのトラッキングコードだけでなく、Yahoo!アクセス解析やサイト共通で表示しているコンテンツ・ブログパーツなどの管理にも応用できます。

MT5でRSS1.0(RDF)を出力するウェブサイトテンプレート

Posted by Hideki at 2009年11月29日 10:42

タグ:

Movable Type 5でRSS1.0(RDF)を出力するウェブサイトテンプレートを作成してみました。このテンプレートを作成することで、ウェブサイトに属する複数のブログの情報を一つにまとめたRSSの配信が可能になります。

テンプレートの概要

blog_idsモディファイアに"children"が指定してあり、ウェブサイト内の全てのブログから最新15件の記事データ(タイトル・概要)を出力します。channel要素内のtitle要素やlink要素は、MT5で新しく追加された「mt:WebsiteName」「mt:WebsiteURL」を使用して出力しています。

使用の際は、ウェブサイト配下のブログが更新された時に、今回追加したテンプレートも再構築されるようにする設定が必要です。「ウェブサイトのプラグイン設定」画面を開き、「MultiBlog 2.1」プラグインの設定で再構築トリガーを追加してください。"ウェブサイト内のすべてのブログ"を選択し、"ブログ記事とウェブページの保存時にインデックスを再構築"するよう設定すればOKです。
MultiBlog 2.1プラグイン設定画面の例

Movable Type 5へアップグレード

Posted by Hideki at 2009年11月28日 21:21

タグ:

2009年11月26日(木)、Six ApartよりついにMovable Type 5(MT5)が登場しました。このWebサイトではMovable Type 4.25を使用していましたので、さっそくアップグレードを行いました。

アップグレードは大きな問題もなく、スムーズに終わりました。参考までに、いくつかの気付きをまとめておきたいと思います。なお、サーバーはさくらのレンタルサーバ スタンダードです。


アップグレード後の管理画面

Movable Typeで記事ページにGoogle Mapを表示させる

Posted by Hideki at 2009年10月11日 15:34

タグ:

「詳しいことは分からないけど、とりあえずGoogleマップを表示させたい!」という方向けに、Movable Typeのブログ記事テンプレートをカスタマイズし、記事ページにGoogle Maps APIを用いて地図を表示する方法を紹介します。

なお、今回は記事ページ全てに表示させることを前提に紹介しています。緯度・経度を入力した場合のみ表示させる場合は、もう少し手を加えていく必要があります。

Copyright © 2009 Skyward Design All Rights Reserved.

Powered by Movable Type 5.0