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

Illustratorスクリプトでファイル名を変更

【時短】Illustratorのファイル名を自動で変更するスクリプト

訪問していただき、ありがとうございます。

今回は、Illustratorの変数機能を使ってデータの書き出しをしたら

  • ファイル名に拡張子がついていない
  • ファイル名が「データセット名」になっていた
  • ファイル名の頭に連番をつけたい

こんな問題を解決するスクリプトを紹介します。

Profile
この記事を書いている私は、DTPデザイナーとしてIllustratorの操作経験が15年以上あり、スクリプトも自分の業務で必要になったものを自ら作成し、デザイン作業の効率化を図っています。
最近では、当ブログでも自作スクリプトを公開しています。

Illustratorの変数機能を使ってデータを書き出したらファイル名に拡張子が付いていないことが、よくありますよね?そんな時に役立つスクリプトを自作しました。
このスクリプトを使えば手作業では、時間の掛かるファイル名の変更も素早く処理することができます。

それでは、どうぞ

「クリエイティブ」がわかる転職エージェント

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

1.【ファイル名変更】スクリプトの概要

ファイル名を変換の概要
ファイル名変更(スクリプト名:fiie_rename.jsx)は、僕がJavaScriptベースに自作したIllustrator用のスクリプトです。
まず、この章でスクリプトのポイントや使い方について解説します。

【fiie_rename.jsx】のポイント

Illustratorの変数機能で書き出したファイルに、このスクリプトを使うと以下の作業を自動で行ってくれるため、修正作業が大幅に短縮されます。

1.ファイル名に.aiまたは.pdfの拡張子を付けてくれる
2.テキストもしくはCSVに書かれている文字列にファイル名を変更してくれる
3.ファイル名の頭に連番を付けてくれる

【fiie_rename.jsx】の入手方法

本スクリプトは、以下からサンプルとしてダウンロードすることができます。

DL:fiie_rename.jsx

ダウンロードと使用については「注意事項と免責事項」に記載していますので、お読みください

【fiie_rename.jsx】の使い方

【fiie_rename.jsx】は下記の手順で使うことができます。

STEP1.namechange.jsxを起動
STEP2.付ける拡張子(.ai/.pdf)を選択
STEP3.テキスト(CSV)から文字列を読み込みた時は【選択】ボタンを押して読み込むテキストファイルを選ぶ
※テキストを読み込まない場合は、【選択】ボタンを押さない
STEP4.実行ボタンを押す
STEP5.ファイル名変更するフォルダーを選択

操作プレビュー

選択したフォルダー内のファイル名が変わっていたら成功です。
※MACで使用すると隠しファイルを読んでしまい正常に動作しません

なお、次の記事ではそもそもIllustratorスクリプトってどう使うのか、活用事例を交えて紹介しているので良ければ参考にしてください。

次の章では、スクリプトのソースコードをコメントアウト付きで公開していますので参考にしてください。



2.【ファイル名変更】スクリプトコード

ファイル名を変換のコード紹介
前章では【fiie_rename.jsx】スクリプトの概要ついて解説しました。
この章で、【fiie_rename.jsx】スクリプトコードについて解説していきます。

コードにコメントアウトも書いてありますので、カスタマイズする際の参考にしてください。

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


#target illustrator 
#targetengine main

//ウインドウパネルの設定 ここから
var win = new Window("window","nameChange",[0,0,250,270]); //new Window (type [, title, bounds, {creation_properties}]);[left, top, width,height] 
win.add('panel',[10,20,240,90],'テキスト読込み' ,{borderStyle:"sunken"});//枠線
win.add('statictext',[27,20,80,82],'読込み先:', {preferredSize: [60, 20]});  //テキスト
var select = win.add('button',[85,40,131,60],'選択');   //ボタン
var fileName = win.add('statictext',[27,55,240,100],'※読込なしの場合は、このまま');  //テキスト
var check_02 = win.add('checkbox');//隠しボタン
win.add('panel',[10,100,240,150],'拡張子' ,{borderStyle:"sunken"});//枠線
var radio_01 = win.add('radiobutton',[30,120,80,140],'AI');   //ラジオボタン
var radio_02 = win.add('radiobutton',[100,120,150,140],'PDF');    //ラジオボタン
win.add('panel',[10,160,240,210],'連番' ,{borderStyle:"sunken"});//枠線
var check_01 = win.add('checkbox',[27,181,240,201],'ファイル名に3桁の番号を付ける') //チェックボタン
var ok = win.add('button',[10,220,115,260],'OK');   //ボタン
var cancel = win.add('button',[120,220,240,260],'キャンセル');   //ボタン
//ウインドウパネルの設定 ここまで

//初期設定 ここから
radio_01.value = true; //AIにチェック
check_01.value = false; //チェックなし
check_02.value = false; //チェックなし
//初期設定 ここまで

//selectボタン ここから
select.onClick = function(){
    fileObj = File.openDialog('読み込むファイルを選択してください',callback(),false);   //varを付けないでグローバル変数にする File.openDialog(タイトル,表示ファイル,複数選択)
    if(fileObj){
        var dest = File.decode(fileObj.name);   //.name:ファイル名の取得 File.decode:文字化けを防ぐ
        fileName.text = "ファイル名:" + dest;   //fileNameを選択したファイル名に置換する
        check_02.value = true; //チェックありにする
     };
};
//selectボタン ここまで

//cancelボタン ここから
cancel.onClick = function(){
    win.close();//ウインドウパネルを閉じる
};
//cancelボタン ここまで

//OKボタン ここから
ok.onClick = function(){
        //変換するファイルが入っているフォルダを選択 ここから
        var folderObj = Folder.selectDialog("ファイル名を変換するフォルダ"); //フォルダを指定
        if(folderObj){
            var fileList = folderObj.getFiles();//指定されたフォルダに入っているファイルを取得
            //変換するファイルが入っているフォルダを選択 ここから
        
            //ファイル名の変更ここから
            for(var i=0; i < fileList.length; i++){//選択したフォルダに入っているデータの数だけ繰り返す
                if(fileList[i] instanceof File){//サブフォルダを除外してファイルのみ選択
                    var fName = File.decode(fileList[i].name);//ファイル名を取得
                    if(check_02.value === true){//テキストを読みこむ場合
                        for(var n = 0; n < list().length; n++){ //テキスト配列の数だけ繰り返す
                            if(check_01.value === true){//連番をつける場合 
                                fileList[n].rename(serial(n) + "_" + list()[n] + ext()); //ファイル名の変更 
                            }else{
                                fileList[n].rename(list()[n] + ext()); //テキストを読み込んでファイル名の変更 
                            };//if:check_01
                        };//for
                    }else{
                            if(check_01.value === true){//連番をつける場合 
                                fileList[i].rename(serial(i) + "_" + fName + ext());//ファイル名の変更 
                            }else{
                                fileList[i].rename(fName + ext());//ファイル名の変更 
                            };//if:check_01
                    };// if:check_02
                };// instanceof File
            };//for 
          };//if(folderObj)
        //ファイル名の変更ここまで
        
        win.close();//ウインドウパネルを閉じる  
};
//OKボタン ここまで

//テキストの読み込み 配列作成 ここから
function list(){
        var textObj = [];   //配列を作成
        var myFile = new File(fileObj);    //ファイルオブジェクトのインスタンス(オブジェクトのコピー)を作成
        myFile.encoding = "UTF-8"; // テキストファイルのエンコーディングを指定
        if(myFile.open("r")){   //指定したファイルを読み込む 成功したらtrueを返す
            var myText="";  //空変数を作成    
            while(!myFile.eof){//テキストファイルを1行ずつ読み込み最終行まで繰り返す作業
                var myText = myText + myFile.readln() + getLineBreak()  //readin 内容を一行読み込む 
            };   //while 
            var text_array = myText.split(getLineBreak());//split:指定の区切りで文字を分割する    
            for(var i = 0; i < (text_array.length-1); i++){
                textObj.push (text_array[i]);//.push 配列の最後にデータを追加する
            };  //for    
            myFile.close();//ファイルを閉じる   
        };
        return textObj; // 値を返す
};
//テキストの読み込み 配列作成 ここまで

//OS別 改行コード ここから
function getLineBreak() {
    if ($.os.indexOf("Windows") !== -1) {//osがWindowsなら
        return String.fromCharCode(13);
    } else {
        return "\r";
    };
};
//OS別 改行コード ここまで

//連番の設定 ここから
function serial(number){
    var prefix =  "000"+ String (number + 1);  // Stringでファイル数の数値を文字に変換し ”000”に結合する
    prefix = prefix.slice(-3); //.slice( 開始位置, 終了位置(省略可能) ) 文字を3桁にする
    return prefix;
};
//連番の設定 ここまで

//拡張子の選択 Windows MAC 両方対応 ここから
function callback() {
    var acceptExtension = [     // 配列 許容するファイル拡張子
        "txt",
        "csv",
    ];
    if (/^win/i.test($.os)) {   //$.os:OSの識別 「/^win/i」は正規表現です。文字列の先頭が「win」で始まるかどうかを判断します。iフラグは大文字小文字を区別しない
        for (var i=0; i < acceptExtension.length; i++) {  //拡張子の数だけ繰り替えす
            acceptExtension[i] = "*." + acceptExtension[i]; //配列に[*.]を追加する
        }
        return acceptExtension.join(";");   //;を配列に追加する Windows用
    }
    return function (F) {
        var re = RegExp("\\.(" + acceptExtension.join("|") + ")$", "i");//文字置換
        return (F instanceof Folder || re.test(F.fsName));//フォルダも選択できるようにする
    };
}
//拡張子の選択 Windows MAC 両方対応 ここまで

//拡張子の判定 ここから
function ext(){
    if(radio_01.value === true){
        var ext = '.ai';
     }else{
        var ext = '.pdf';
     };
    return ext;
};
//拡張子の判定 ここまで

win.center();//ウインドウパネル センター表示
win.show();//ウインドウパネル 実行



3.注意事項と免責事項

注意している女性

本記事に記載してあるスクリプトを実行した結果生じるトラブルに関しては一切の責任を負いません。またIllustratorのアップデートにより動作が変わってしまう可能性もあります。アップデートによる動作の不具合に関しては、対処しかねるので予めご理解ください。
最後に本記事で配布しているスクリプトを無断で転送・販売・配布することは禁止いたします。



4.【ファイル名変更】スクリプトのまとめ

SUMMARY
今回は、【大量のファイル名を自動で変更してくれる】スクリプトについて紹介してきました。

このスクリプトは、Illustratorの変数機能を使った結果、ファイル名の変更が必要になったさい手作業では時間の掛かる作業を自動で素早く変更してくれるので大変便利です。
ファイル名の変更が必要になったさいは、ぜひ【fiie_rename.jsx】スクリプトを利用してみてください。

なお、Illustratorスクリプトについて学習してみたいと思った方は、次の記事でおすすめの書籍とWEBサイトについて紹介しているので良ければ参考にしてください。

というわけで、今回は以上です。

<【時短】Illustratorのファイル名を自動で変更するスクリプト>を
最後まで読んでいただき有難う御座いました。

Illustratorスクリプトのおすすめ書籍!

サンプルプログラム330本掲載

また、以下の記事で今回紹介した書籍以外にもスクリプトに関する書籍を紹介しているので参考にしてください。

ガネメ現役サラリーマン

投稿者の過去記事

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

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

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

プロフィール

face

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

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

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

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

アーカイブ

カテゴリー

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

ピックアップ記事

  1. スクリプトの実行を簡略化
    デザイン効率化戦略:スクリプト実行を効率化する スクリプトを実行する手間を減らしたい…
  2. Illustratorスクリプト特集
    いつも訪問していただきありがとうございます。 もっと効率よくデザイン作業を進めたい …
  3. オブジェクト寸法を自動追加
    デザイン効率化戦略:寸法入力を効率化 図面に寸法を追加するのが手間 都度、オブジェク…




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