忍者ブログ

ぼんぷろぐ

InDesign、イラレ、フォトショ(CS6 Win)の勉強中。。。(旧まとめいみブログ)

[イラレ]
全角英数←→半角英数を変換するイラレスクリプト

選択物の中の全角英数を半角英数にするスクリプトと、その逆の2点セットです。

いやこんなものとっくに誰かが作ってると思うんですが、これを使ったテキストの複数選択に対応したものが欲しかったので自分で書いてみました。たとえば「2文字以上の数字を半角にする」などという操作も正規表現検索選択との合わせ技で柔軟にできるわけです。

[ダウンロード]

以下ソース(全角→半角の方)

(function(){

var sel=app.selection;
var selTexts=[];
if (sel.constructor.name=="TextRange") {
    selTexts.push(sel)
} else {
    (function (items){
        for (var i=0;i<items.length;i++){
            switch (items[i].constructor.name){
                case "TextRange":
                    selTexts.push(items[i])
                    break;
                case "TextFrame":
                    if (!lockedOrHidden(items[i])) selTexts=selTexts.concat(items[i].textSelection);
                    break;
                case "GroupItem":
                    if (!lockedOrHidden(items[i])) arguments.callee(items[i].pageItems);
                    break;
            }
        }
    })(sel);
}

for (var i=0;i<selTexts.length;i++){
    var str=selTexts[i].contents;
    var offset=selTexts[i].characterOffset;
    var c=selTexts[i].characters[0];
    var n,s;
    for (var j=0;j<str.length;j++){
        n=str.charCodeAt(j);
        s="";
        if (n==0x3000) s=" ";
        else if (0xFF01<=n && n<=0xFF5E) s=String.fromCharCode(n-0xFEE0);
        if (s!=="") {
            c.characterOffset=offset+j-1;
            c.contents=s;
        }
    }
}

function lockedOrHidden(pageItem){
    return pageItem.locked || pageItem.hidden || pageItem.layer.locked || pageItem.layer.hidden;
}
})();
PR

[未選択]
JavaScriptのクロージャについて勉強したので自分なりにまとめた

グローバル変数がglobalオブジェクトのメンバであるように、ローカル変数もそのスコープに対応した『オブジェクトのようなもの』のメンバである


ローカルスコープ内で関数を定義すると、その関数は、そのスコープの『オブジェクトのようなもの』への参照を持ち、名前解決に使う


ローカルスコープが終了しても『オブジェクトのようなもの』は、それを参照している関数が存在する限り消滅しない これがJavaScriptのクロージャの原理


『オブジェクトのようなもの』はthisで自身を参照できないという点でオブジェクトとは異なる


ただしFunctionコンストラクタで生成した関数だけは『オブジェクトのようなもの』への参照を持たない(*1)


*1 この仕様はExtendScriptでは守られてないっぽい

[イラレ]
イラレの自動バックアップ取り機(Windows用)を作った

『複製を保存』アクションとAutoHotkeyを使ってイラレの自動バックアップツールを作ってみました。AutoHotkeyのコンパイル機能で書きだした、単体で動作するEXEファイルです。

とりあえず自分の環境(CS6@Windows7)では動いてるんですが、OSやイラレのバージョンに依存しそうな処理が結構あるので、どの環境まで使えるのか検討つきません。
可能性としては、古い方ではIllustrator 10.0まで動くかも(必要なVBSのメソッドが10.0から存在してることを流星光輝さんに教えてもらいました)。
Win10でちゃんと動くかどうか気になる(バルーンチップが使えないという噂が)


「仕様」は「こうなるように作ったつもりだけど、ならなかったら教えてね!」という意味です。

仕様

イラレのアクティブな(最前面の)ドキュメントを一定時間毎に「複製を保存」する

ファイル名はドキュメント名の前に(YYMMDD_hhmmss)が付いたもの

例:名称未設定-1を2016年5月13日17時30分6秒に保存した場合
    (160513_173006)名称未設定-1.ai

「n回に1回残す」という設定が可能

「保存を行う際、通常は前回の保存分を削除するが、n回に1回は削除を行わない」という設定です。たとえば保存間隔を10分にして、6回に1回残すとすると、保存フォルダには1時間ごとのバージョンと、直近の10分以内のバージョンが残ることになります。n=1にするといっさい削除を行いません。

タスクバーに常駐

実行の10秒前から、タスクバーのバルーンチップでカウントダウンを表示

保存中はイラレが操作不能になるため、その心の準備をしておくためです。こんなの↓

以下の場合には保存を行わない

・イラレのアクティブなドキュメントが既に保存済み(ウィンドウ名に*が付いてない状態)
・前回保存時からイラレのウィンドウが一度もアクティブになっていない




準備

①保存フォルダを決める

保存フォルダを1つ準備しておきます。バックアップファイルは全て単一のフォルダ内に保存されます(元のドキュメントと同じフォルダに保存、というようなことはできません)。

②Illustratorでアクションを作成

イラレでアクションを新規作成し、『複製を保存』だけを記録します。このとき、『PDF互換ファイルを作成』をオフにしておくと処理が軽く、ファイルサイズも小さくなると思われます。ファイル名は適当に(③で使います)。

③初期設定

AHKai.exeを起動するとダイアログボックスが出るので、
・作成したアクションの名前
・アクションを登録したセットの名前
・保存フォルダのフルパス
・アクションを作ったときに使ったファイル名
・保存間隔(分)
・何回に1回残すか
を設定します。

ProgIDはイラレのCOMコンポーネントにアクセスするためのIDですが、基本的に『Illustrator.Application』のままで良いはず。
環境によっては『Illustrator.Application.CS6』などとバージョンまで指定しなければいけないかもしれません。

[イラレ]
イラレスクリプトで正規表現検索したテキストを「すべて同時に選択」しちゃう

イラレってスクリプトからだと離れた箇所のテキストを同時に選択できるのですが、それを使ったスクリプトが出回ってるのを全く見ないあたり、単に知られてないのか、特定のバージョンでしかできないのか、はたまた何か深刻なバグを抱えているから避けられてるのか、よく分からないのです。別に私が発見したわけじゃなく、かなり前に誰かのツイートか何かで知ったので、知ってる人は知ってることだと思うんですが。

そういう事情ですので何かあっても泣かずに怒らずに報告してくれる人だけ使ってみてください。
・選択範囲内
・選択テキストまたはカーソルを含むストーリー(連結された一連のテキスト)
・ドキュメント全体
のいずれかを対象に正規表現でテキスト検索し、マッチした部分をすべて選択するスクリプトです。非表示やロックされてるオブジェクトは対象にしません。

選択しちゃえば文字スタイルを当てたり前後のアキを調整したりなんてことはすべて同時にできるので、使いどころは割りと多いのでは。


[ダウンロード]

なお正規表現はExtendScriptのRegExpをほぼそのまま使ったもので、
・\dは全角数字にヒットしない([0-9]を使おう)
・先読み(前に◯がつく△を検索)、否定先読みができない
などの特徴があります。

「正規表現」のチェックを外せば普通のテキスト検索ができます。

(16.04.17)$がちゃんと段落終わりにマッチするように修正)
(16.05.22)
 検索文字列入力欄を長くした
 \.で.にマッチしない問題を修正
 \kで漢字にマッチするようにした
(16.05.23)
 
$.writelnの消し忘れを修正

プロフィール

あるふぁ(仮)
InDesignで新聞組版のようなことをしてる人です。

InDesignスクリプトについて

つくったInDesignスクリプトのまとめ

twitter

5つの「く」

ハタハタのすばらしさをまとめました。