このサイトはアフィリエイト広告を利用してます

特定の文字を一括削除

爆速!特定の文字を一括削除するIllustratorスクリプト

Illustrator作業で、こんな悩みはありませんか?

  • 特定の文字だけを安全に削除したい
  • 複数の.aiファイルにまたがって手作業で削除するのが面倒
  • うっかり別のテキストまで消してしまうのが怖い

  • クライアント名や指示コメントなど、作業中に挿入された一時的なテキスト。
「あとでまとめて削除しよう」と思っていても、ひとつずつ開いて削除するのは、地味に時間がかかり、削除ミスのリスクもつきものです。

    そんな悩みを解決してくれるのが、指定した文字をフォルダ単位で一括削除できるIllustratorスクリプト「textDelete」
    
フォルダ単位で、不要な文字だけを正確に削除。大量の.aiファイルもスムーズに処理できます。

    作業の手間を減らしつつ、ヒューマンエラーも防ぎたい——
そんなあなたのために、このスクリプトの使い方と導入手順をわかりやすく解説します。
今すぐ、効率化の一歩を踏み出しましょう。

    Profile
    この記事を書いている私は、DTPデザイナーとしてIllustratorの操作経験が15年以上あり、スクリプトも自ら作成し、デザイン作業の効率化を図っています。
    本ブログでもスクリプトに関する記事を定期的に公開していますので、ぜひご参考にしてください。
    関連記事:「完全無料」で作業の効率化!Illustratorスクリプト特集!

    【textDelete】スクリプトの概要

    DESCRIPTION
    まず最初に、【textDelete】とは、どのようなスクリプトなのかをご説明します。

    【textDelete】の機能

    「textDelete」は、指定した文字列をIllustratorファイルから一括削除できるスクリプトです。
特に、大量の.aiファイルを扱う現場で「同じ文字列を毎回手動で消すのが面倒」「削除ミスが怖い」と感じている方に最適なツールです。

    以下のような処理を自動で実行してくれます。
    主な機能一覧:

    ・フォルダ内の.aiファイルを自動で開く
    ・ロックされたレイヤーを解除して処理対象に
    ・すべてのテキストフレームをチェックし、指定文字を削除
(※非表示レイヤーは対象外)
    ・処理後、元のロック状態を復元
    ・指定文字が削除された場合のみ、ファイル名の末尾に「_td」を付けて別名保存
(削除されなかったファイルは保存せず自動で閉じます)

    【textDelete】の使い方

    使い方はとてもシンプル。Illustratorのスクリプトメニューから以下の手順で操作するだけです。

    使い方ステップ:

    • 1. Illustratorのスクリプトメニューから「textDelete.jsx」を実行
    • 2. 削除したい文字列を入力
    • 3. 対象の.aiファイルが入ったフォルダを選択
    • 4. 「OK」をクリックして実行開始

    たったこれだけで、面倒な削除作業が自動化されます。

    Illustratorスクリプトの基本的な使い方が不安な方は、こちらの記事も参考にしてください。


    関連記事:【入門】Illustratorスクリプトの使い方!お手軽に自動化のススメ

    【textDelete】のダウンロード

    この便利なスクリプトは以下より無料でダウンロード可能です。
使用前には必ず「注意事項と免責事項」をご確認のうえ、安全にお使いください。

    ダウンロード:textDelete.jsx

    ダウンロードできない場合は…
    スクリプトのソースコードはこの後に掲載しています。
コピー&ペーストでお使いいただけるので、テキストエディタで保存してお試しください。
    まだエディタをお持ちでない方は、以下の記事で無料で使える「VS Code」の導入方法を解説しています。

    関連記事:無料で使えるVS CodeでIllustratorスクリプトの開発環境を整えよう

    動作チェック

    このスクリプトは、以下の環境で動作確認を行っています。

    ・Illustrator 2024【Mac】

    万が一、スクリプトがうまく動作しない場合は、下記のトラブルシュート記事をご覧ください。

    関連記事:Illustratorスクリプトが動かない時の簡単解決法5選



    【textDelete】スクリプトのソースコード

    SOURCE CODE
    ここでは、【textDelete】の動作フローと各処理条件がわかるソースコードを紹介します。
    理解しやすいよう、説明用のコメントアウトも含まれていますので、参考にしながらコードの動きを確認してください。

    ソースコード

    
    // ScriptUIを使用してダイアログパネルを作成
    var dialog = new Window('dialog', '文字削除とフォルダ選択');
    dialog.orientation = 'column'; // 要素を縦に並べる
    dialog.alignChildren = 'left'; // 子要素を左揃えにする
    
    // 削除する文字を入力するテキストボックス
    var textGroup = dialog.add('group');
    textGroup.add('statictext', undefined, '削除する文字:');
    var targetTextInput = textGroup.add('edittext', undefined, '');
    targetTextInput.characters = 42;
    targetTextInput.active = true;  //オフセットテキストエリアにフォーカス
    
    // フォルダ選択ボタン
    var folderGroup = dialog.add('group');
    folderGroup.add('statictext', undefined, '実行するフォルダを選択:');
    var folderInput = folderGroup.add('edittext', undefined, '');
    folderInput.characters = 20;
    var browseButton = folderGroup.add('button', undefined, '参照...');
    
    // フォルダ選択ダイアログを表示
    browseButton.onClick = function() {
        var inputFolder = Folder.selectDialog(".aiファイルが入っているフォルダを指定してください");
        if (inputFolder) {
            folderInput.text = inputFolder.fsName;
        }
    };
    
    // OKボタンとキャンセルボタン
    var buttonGroup = dialog.add('group');
    buttonGroup.alignment = 'right';
    buttonGroup.add('button', undefined, 'OK', {name: 'ok'});
    buttonGroup.add('button', undefined, 'キャンセル', {name: 'cancel'});
    
    if (dialog.show() == 1) {
        var targetText = targetTextInput.text;
        var inputFolder = new Folder(folderInput.text);
    
        if (targetText !== "" && inputFolder.exists) {
            // Illustratorのファイルを開く
            var fileList = inputFolder.getFiles("*.ai"); // 選択フォルダ内の *.ai ファイルリストを取得
            for (var i = 0; i < fileList.length; i++) {
                var fileRef = fileList[i];
                var docRef = app.open(fileRef);
                var doc = activeDocument;    
                
                // レイヤーのロックを解除する
                var lockLayers = [];
                var layObj = doc.layers;
                for (var j = 0; j < layObj.length; j++) {
                    if (layObj[j].locked) {
                        lockLayers.push(layObj[j]); // ロックされているレイヤー番号を配列に追加
                        layObj[j].locked = false;     
                    }
                }
    
                // 正規表現
                var regex = new RegExp(targetText, 'g'); // 正規表現オブジェクトを作成
                var dtextFrames = doc.textFrames; // ドキュメント内のすべてのテキストフレームを取得
                var textDeleted = false; // 指定文字が削除されたかどうかを追跡
    
                // テキストフレームをループして指定された文字を削除
                for (var n = dtextFrames.length - 1; n >= 0; n--) { // 逆順でループ
                    var textFrame = dtextFrames[n];
                    var textContent = textFrame.contents;
                    
                    // テキストフレームが非表示レイヤーに属しているか確認
                    if (!textFrame.layer.visible) {
                        continue; // 非表示レイヤーのテキストフレームはスキップ
                    }
    
                    // 指定された文字が含まれている場合は削除
                    if (textContent.indexOf(targetText) !== -1) {
                        textFrame.contents = textContent.replace(regex, ''); // 正規表現を使用して文字を削除
                        textDeleted = true; // 指定文字が削除されたことを記録
                    }
                    
                    // テキストフレームが空の場合は削除
                    if (textFrame.contents === "") {
                        textFrame.remove();
                    }
                }
    
                // レイヤーロックを再設定する
                for (var x = 0; x < lockLayers.length; x++) {
                    lockLayers[x].locked = true;     
                }
    
                // 指定文字が削除された場合は別名保存
                if (textDeleted) {
                    var newFileName = fileRef.name.replace(/\.ai$/, '_td.ai');
                    var newFile = new File(fileRef.path + '/' + newFileName);
                    doc.saveAs(newFile);
                }
    
                doc.close(SaveOptions.DONOTSAVECHANGES); // 保存せずにドキュメントを閉じる    
            }
        } else {
            alert("削除する文字が指定されていないか、フォルダが存在しません。");
        }
    } else {
        alert("操作がキャンセルされました。");
    }
    
    

    なお下記の記事では、Illustratorスクリプトを自作する方法についてスクリプトコードの事例を交え解説しているのでよければ参考にしてください。



    注意事項と免責事項

    ATTENTION
    【text_number】は、商用利用可能です。ただし使用につきましては、下記の注意事項と免責事項を必ずお守りください。

    注意事項

    • 予期せぬエラーやデータ損失を防ぐために、スクリプト実行前には必ずデータを保存してください。
    • 事前にスクリプトの動作確認を行い、環境に適しているか確認してください。
    • Illustratorのアップデートによりスクリプトの動作が変わる可能性があります。アップデート後の不具合についてはサポートできませんので、あらかじめご了承ください。

    免責事項

    • ご利用はすべて自己責任でお願いいたします。
    • スクリプトの使用によるトラブルや損失について、当方は一切の責任を負いません。
    • 商用利用における成果物の品質や結果に関しては、一切の責任を負いません。
    • 本スクリプトの著作権は制作者に帰属します。無断で転送・販売・配布することは禁止いたします。



    まとめ:特定の文字を一括削除する【textDeleter】スクリプト

    summary

    今回は、特定の文字を一括削除してくれる【textDeleter】スクリプトを紹介しました。
    【textDelete】は、煩雑でミスの起きやすい文字削除作業を確実に自動化できるスクリプトです。
業務効率を上げたい、もっとクリエイティブな作業に時間を使いたい——
そんな現場のデザイナーにこそ活用していただきたいツールです。
    今すぐ導入して、日々の作業をもっとラクに、もっと安全にしていきましょう。

    ダウンロードはこちら:textDelete.jsx

    というわけで今回は以上です。
    『爆速!特定の文字を一括削除するIllustratorスクリプト』を最後までお読みいただき、ありがとうございました。

    あなたの「働き方」も、アップデートしませんか?

    スクリプトで作業を効率化したその先に―― 「もっとクリエイティブに集中したい」「ルーチンに縛られない働き方をしたい」 そんな思いが芽生えたなら、次は“働き方”を見直すタイミングかもしれません。

    ●「量より質」を重視した求人のご紹介
    ●「クリエイティブがわかっている」
    ●「求人企業を深く知る・密接な関係」

    成長できる転職先を探すなら【HIGH-FIVE】がおすすめ

    また、デザイナーとしての経験から、グラフィックデザイナーの「転職・独立をサポートする厳選3社」を紹介しています。

    ガネメ現役サラリーマン

    投稿者の過去記事

    ◇このブログでは、15年以上DTPデザイナーとして、学んできたデザインやパソコンのセキュリティ知識・参考になった書籍などを紹介しています。
    たまに、脇道にそれることもあります。

    ◇このブログはアフィリエイト広告を利用しています

    ◇取得資格
    ・情報セキュリティマネジメント
    ・ITパスポート
    ・色彩検定 2級
    ・色彩検定 UC級
    ・屋外広告士
    ・第2種電気工事士
    その他・・・・

    プロフィール

    face

    ガネメ
    鹿児島県在住
    現役サラリーマン

    ◇このブログでは、15年以上DTPデザイナーとして、学んできたデザインやセキュリティ知識、参考になった書籍などを紹介しています。
    たまに、脇道にそれることもあります

    ◇取得資格
    ・情報セキュリティマネジメント
    ・ITパスポート
    ・色彩検定 2級
    ・色彩検定 UC級
    ・屋外広告士
    ・第2種電気工事士
    その他・・・・

    詳しいプロフィールはこちら

    アーカイブ

    カテゴリー

    使用中のレンタルサーバー

    ピックアップ記事

    1. Illustratorスキルを活かせる仕事5選
      Illustratorを操作できるけど、今の仕事では名刺作成くらいしか活かせていない …
    2. 転職or独立迷ったらこのサービス
      「このまま今の会社にいてもいいのか…」「いっそフリーランスになるべき?」経験を積んだグラフィックデ…
    3. 屋外広告士に合格する勉強法
      忙しくてまとまった勉強時間がとれない デザインの実務経験はあるけど、試験対策のやり方が…




    ブログランキング・にほんブログ村へ   
    PAGE TOP