忍者ブログ

ぼんぷろぐ

InDesignとかイラレとかのスクリプトよもやま話

新しいブログに引っ越しました。

こちらのブログはもう更新しませんが、コメント欄は生きてますので疑問、ご指摘などありましたらどうぞ。

[InDesign]
テキストを分割しながらペーストするスクリプト

あいうえお,かきくけこ,さしすせそ

っていうテキストをコピーしているとき、
  • InDesignのテキスト中にカーソルを置いてこのスクリプトを実行すると、「あいうえお」を挿入して、クリップボードに「かきくけこ,さしすせそ」が残ります。
  • 再度実行すると「かきくけこ」を挿入して、クリップボードに「さしすせそ」が残ります。
  • 再再度実行すると「さしすせそ」を挿入して、クリップボードに「,」が残ります。
  • 再再再度実行すると、何も起きません。
(区切り文字に","を指定している場合)

InDesign上で何も選択してない状態でこのスクリプトを実行すると、下のようなダイアログが出て、区切り文字を変更することができます。


なお、デフォルトの区切り文字は"\r\r"(改行2回)です。

2行目の
var KeepFormat=false;

var KeepFormat=true;
にしたらコピペ元の書式を維持できるかもしれないけどあまり調べてないので非推奨。



app.doScript(function(){
var KeepFormat=false;
var Delimiter="\r\r";
var Sel=app.activeDocument.selection;
var myDiag=app.dialogs.item("分割ペースト.jsx");
if (Sel.length==0) {
    if (!myDiag.isValid) {
        with (myDiag=app.dialogs.add({name:"分割ペースト.jsx"})){
            with (dialogColumns.add()){
                with (dialogRows.add()){
                    staticTexts.add({staticLabel:"区切り文字を入力"});
                    textEditboxes.add({editContents:"\\r\\r"});
                }
                staticTexts.add({staticLabel:"※改行は\\r 1行空きは\\r\\r タブは\\t \\は\\\\"});
            }
        }
    }
    if(!myDiag.show())exit();
    with(myDiag.dialogColumns[0].dialogRows[0].textEditboxes[0]){
        if (editContents=="") editContents="\\r\\r";
    }
    exit();
}
if (myDiag.isValid) {
    Delimiter=eval("\""+myDiag.dialogColumns[0].dialogRows[0].textEditboxes[0].editContents+"\"");
}
var Sel0=app.activeDocument.selection[0];
if (!Sel0.hasOwnProperty("parentTextFrames")) exit();
var tempTF=app.activeDocument.textFrames.add();
var tempStory=tempTF.parentStory;
tempTF.insertionPoints[0].select();
app.paste();
if (tempStory.contents!=Delimiter) {
    var n;
    while ((n=tempTF.parentStory.contents.indexOf(Delimiter))==0){
        tempStory.characters.itemByRange(0,Delimiter.length-1).getElements()[0].contents="";
    }
    if (n>-1) {
        if (KeepFormat) {
            tempStory.characters.itemByRange(0,n-1).duplicate(LocationOptions.AT_END,Sel0);
        } else {
            Sel0.contents=tempStory.characters.itemByRange(0,n-1).getElements()[0].contents;
        }
        tempStory.characters.itemByRange(0,n+Delimiter.length-1).getElements()[0].contents="";
        if (tempStory.contents=="") tempStory.contents=Delimiter;
    } else {
        if (KeepFormat) {
            tempStory.duplicate(LocationOptions.AT_END,Sel0);
        } else {
            Sel0.contents=tempStory.contents;
        }
        tempStory.contents=Delimiter;
    }
    tempStory.texts[0].select();
    app.copy();
}
Sel0.select();
app.activeDocument.selection[0].insertionPoints.lastItem().select();
tempTF.remove();
},ScriptLanguage.JAVASCRIPT,[],UndoModes.ENTIRE_SCRIPT);
                                                                            
                
PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

プロフィール

kawamoto_α
(あるふぁ(仮))


InDesignで新聞組版のようなことをしています。

ツイッタ

※ブラウザによっては当ブログからDLしたzipファイルが拡張子なしになることがあるようですが、.zipを補って開いてください。



イラレ用トーンカーブスクリプト(¥1500)



クロソイド式角丸長方形スクリプト(¥500)
Illustrator用
InDesign用



イラレスクリプトをキーボードショートカットで実行するやつ(Win用)