【コピペで使える】改行テキストを一発分割!Illustrator時短スクリプト

スポンサーリンク
スクリプト
スポンサーリンク

Illustratorで複数行のテキストを扱っていると、
「1行ずつ別々のテキストに分けたい…」
と思うことはありませんか?

例えば、箇条書きや名簿、商品名リスト、タイトル案などをIllustratorに貼り付けたあと、
1行ずつ動かしたいのに、全部が1つのテキストボックスになっていて不便なことがあります。

そんなときに便利なのが、今回紹介する
改行テキストを1行ずつ分割できるIllustratorスクリプトです。

この記事では、スクリプトをダウンロード形式ではなく、
コードをコピーして自分で保存する方法で紹介します。

この記事でできること

このスクリプトを使うと、Illustrator上の改行入りテキストを、
1行ずつ別々のテキストオブジェクトに分割できます。

例えば、以下のようなテキストを選択して実行すると、

このように、1行ごとに独立したテキストになります。

見た目は同じでも、分割後はそれぞれ個別に移動・編集できます。

こんな人におすすめ

  • 改行テキストを1行ずつバラしたい人
  • 箇条書きやリストをよくデザインに使う人
  • テキストを手作業で分けるのが面倒な人
  • Illustrator作業を少しでも時短したい人

スクリプトの使い方

1. コードをコピーする

まず、下に掲載しているスクリプトコードをすべてコピーします。


/**
 * Split selected text into separate point text frames per *visual line*
 * (includes area text wrapped lines). Skips empty/blank lines.
 *
 * Usage: Select ONE TextFrame and run.
 */
(function () {
    if (app.documents.length === 0) { alert("ドキュメントがありません。"); return; }
    if (app.selection.length !== 1 || app.selection[0].typename !== "TextFrame") {
        alert("テキストオブジェクトを1つだけ選択してください。");
        return;
    }

    var doc = app.activeDocument;
    var tf = app.selection[0];

    // Base position
    var gb = tf.geometricBounds; // [left, top, right, bottom]
    var left = gb[0];
    var top  = gb[1];

    // Get visual lines (includes wrapped lines)
    var tr = tf.textRange;
    var lineRanges = tr.lines; // collection of TextRange (per line)

    if (!lineRanges || lineRanges.length === 0) {
        alert("行が取得できませんでした。");
        return;
    }

    // Fallback font/size/leading from first line
    var baseAttr = lineRanges[0].characterAttributes;
    var baseFont = baseAttr.textFont;
    var baseSize = baseAttr.size;

    var baseLeading = baseAttr.leading;
    if (!baseLeading || baseLeading <= 0) baseLeading = baseSize * 1.2;

    var deleteOriginal = true;

    var made = 0;

    for (var i = 0; i < lineRanges.length; i++) {
        var lr = lineRanges[i];

        // line text (remove paragraph/soft return chars)
        var txt = lr.contents;
        txt = txt.replace(/\r/g, "").replace(/\n/g, "").replace(/\u0003/g, ""); // \u0003 = soft return (Shift+Enter) in some cases

        // skip blank line (spaces/tabs only)
        if (txt.replace(/^\s+|\s+$/g, "") === "") continue;

        var newTf = doc.textFrames.add();
        newTf.kind = TextType.POINTTEXT;

        // place lines tightly, skipping empty ones
        newTf.position = [left, top - (baseLeading * made)];
        newTf.contents = txt;

        // apply base styling (simple / stable)
        var ntr = newTf.textRange;
        ntr.characterAttributes.textFont = baseFont;
        ntr.characterAttributes.size = baseSize;
        ntr.characterAttributes.leading = baseLeading;

        // If you want to copy fill color too, uncomment:
        // ntr.characterAttributes.fillColor = baseAttr.fillColor;

        made++;
    }

    if (made === 0) {
        alert("空行以外がありませんでした。");
        return;
    }

    if (deleteOriginal) tf.remove();

    alert("行ごとに分割しました(空行除外:" + made + "行)");
})();
 

スポンサーリンク

2. テキストエディタに貼り付ける

Windowsなら「メモ帳」、Macなら「テキストエディット」などを開き、コピーしたコードを貼り付けます。

Macのテキストエディットを使う場合は、
フォーマット > 標準テキストにする
を選んでから保存してください。

3. 拡張子を .jsx にして保存する

ファイル名は、例えば以下のようにします。

split_line_text.jsx

拡張子が .txt にならないように注意してください。

4. Illustratorで実行する

Illustratorを開き、分割したい改行テキストを選択します。

その状態で、

ファイル > スクリプト > その他のスクリプト

を選び、保存した .jsx ファイルを選択します。

使用時の注意点

このスクリプトは、改行が入ったテキストオブジェクトを選択している状態で使います。

以下の場合はうまく動かないことがあります。

  • テキストを選択していない
  • 複数のテキストを同時に選択している
  • アウトライン化された文字を選んでいる
  • ロックされたレイヤー上のテキストを選んでいる

うまく動かない場合は、まずテキストが編集可能な状態か確認してください。

まとめ

改行入りのテキストを1行ずつ分ける作業は、手作業でやると意外と時間がかかります。

今回のスクリプトを使えば、
複数行のテキストを一発で個別のテキストに分割できます。

名簿、箇条書き、商品リスト、見出し案などをIllustratorで扱うときに便利なので、ぜひ作業効率化に使ってみてください。

スポンサーリンク

コメント