スクリプト

レイヤー名かフッテージ名末尾の数値を足し引きするスクリプト「numAddSubRenamer.jsx」

レイヤー名かフッテージ名末尾に数値を振って管理している場合、このスクリプトで足し引きできます。

[概要]

開いたプロンプトに数値を入力すると、全選択オブジェクトの元の名前末尾の数値をオフセットするスクリプト。

[使い方]

  1. 対象のオブジェクトを全て選択する
  2. スクリプトを実行する
  3. 開いたプロンプトに半角数字を入力しOKをクリックする

[オプション]

  • レイヤーを選択していればレイヤー名を変更する
  • プロジェクトパネルのフッテージを選択していればフッテージ名を変更する

[解説]

var actItm = app.project.activeItem;
var sel="";

if(actItm instanceof CompItem){//タイムライン
    sel = actItm.selectedLayers;
    selectobj="レイヤーの";
}else{//プロジェクトウィンドウ
    sel = app.project.selection;
    selectobj="フッテージの";
}

if(sel.length>0){
    var numMath=parseInt(prompt(selectobj+"ズラす数値を入力", "1"));
    var inputNum=(numMath>0)?"+"+numMath:numMath;// 操作履歴で見やすい用に入力値を保存
}

function f_numAddSubRenamer(){
    if(sel.length>0){
        var num=0;
        var moji=[];
        var keta=0;
        var errorLayer=[];

        for(i=0;i<sel.length;i++){//桁数把握
            num=sel[i].name.match(/\d+$/g);//末尾の数字配列
            if(num!=null){
                num=num.join("");//数字部分の文字列
                moji[i]=sel[i].name.slice(0,-num.length);
                if(!isNaN(num)){
                    keta1=num.length;//元が0パディングされてた場合の桁数保存
                    num=Number(num)+numMath;//ここで0パディングが消える
                    keta=Math.max(keta,num.toString().length);
                    keta=Math.max(keta,keta1);//0パディングあったら復活
                }
            }else{
                errorLayer.push("#"+sel[i].index+" "+sel[i].name);
            }
        }
        for(i=0;i<keta;i++){
            padding+="0";
        }

        for(i=0;i<sel.length;i++){
            num=sel[i].name.match(/\d+$/g);//末尾の数字配列
            if(num!=null){
                num=num.join("").toString();//数字部分の文字列
                num=Number(num)+numMath;
                num=(padding+num).slice(-keta);
                sel[i].name=moji[i]+num;
            }
        }

        if(errorLayer.length>0){
                alert("末尾に数字のないレイヤーはスキップされました\r"+errorLayer.join("\r"));
        }
    }// if(sel.length>0)
}

if(isNaN(numMath)==false){
    app.beginUndoGroup("numAddSubRenamer->"+inputNum);
        f_numAddSubRenamer();
    app.endUndoGroup();
}

4行目で選択しているのがタイムラインか調べます。そうでなければプロジェクトウィンドウを処理対象にします。

12行目でfunctionに入る前にapp.beginUndoGroup()の表示文字列用にプロンプトの入力値をinputNumで受け取ります。

※やり直しする際の名前で、情報パネルにも表示されるやつです

プラスの数値の場合は「+3」などと表示したいので、(numMath>0)で0以上なら”+”+numMathとします。マイナスの数値の場合はそのままで「-」がつくのでnumMathのみでOKです。

24行目と39行目で2回for文を回しています。

似た処理をしていますが、1度目はレイヤー名末尾の数値が何桁か把握するために回します。

num=sel[i].name.match(/\d+$/g);で末尾の連続した数値を配列で受け取りますので、num=num.join(“”);で結合します。

数値のほうが分かれば、moji[i]=sel[i].name.slice(0,-num.length);で数値の文字数分削った残りのレイヤー名が取り出せます。

29行目~34行目で一番桁数の多い数値を調べます。これを使って最終的に全レイヤー末尾の数値の桁数を合わせます。

36行目はレイヤー名末尾に数値のないレイヤーがあれば一旦ここに溜めておきます。

39行目で元の桁数に合わせられるようゼロパディングします。元の桁数分「0」を文字列で追加し、最終的に48行目で右から該当文字数をsliceして合わせます。

43行目からが本処理で、取り出した数値にプロンプトで入力した数値を足して(マイナスなら引いて)、ketaの一番多い桁数に合わせ、sel[i].name=moji[i]+num;で数値を除いたレイヤー名部分と計算後の数値を繋いでリネームしています。

ダウンロード

放射状に配置するスクリプト「posCircleAlign.jsx」前のページ

レイヤー名かフッテージ名末尾に連番を振るスクリプト「sequentialNumRenamer.jsx」次のページ

ピックアップ記事

  1. なぜ?After Effectsのレイヤーをエクスプレッションで効率化
  2. フリーランスの開業届提出は開業freeeでとにかく簡単に
  3. amazonのスポンサー商品(広告)を非表示にするブックマークレット「amazO…
  4. なぜ?After Effectsの操作を「スクリプト」で効率化
  5. YouTubeで一時停止中のコントローラーを非表示にするブックマークレット

関連記事

  1. スクリプト

    アイソメトリックビューを簡易的に実現するスクリプト「isometricCamera.jsx」

    インフォグラフィックスにも相性のいいアイソメトリックビュー風カメラを手…

  2. スクリプト

    なぜ?After Effectsの操作を「スクリプト」で効率化

    出来る範囲はマウスやキーボードで編集者が直接できる操作に限られますが、…

  3. スクリプト

    パスに沿ってレイヤーを均等配置するスクリプト「posPathAlign.jsx」

    全選択レイヤーをパスに沿って均等配置するスクリプト。…

  4. スクリプト

    レイヤー名かフッテージ名末尾に連番を振るスクリプト「sequentialNumRenamer.jsx…

    連番管理したいレイヤーかフッテージを選択した順に連番でリネームするスク…

  5. スクリプト

    タイムリマップでレイヤー管理するスクリプト(2フレーム以上)「tRemapSelectorSette…

    「タイムリマップでレイヤー管理するエクスプレッション(2フレーム以上)…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA