忍者ブログ

ぼんぷろぐ

InDesign、イラレ、フォトショ(CS6 Win)の勉強中。。。(旧まとめいみブログ)

[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絵文字

プロフィール

あるふぁ(仮)
InDesignで新聞組版のようなことをしてる人です。

InDesignスクリプトについて

つくったInDesignスクリプトのまとめ

twitter

フリーエリア