Blue-Screeeeeeen.net-youichi7imazekiのDTPメモ-

トップページ » InDesign » 【InDesign】選択文字列にパーレン(かっこ)を付加するスクリプト「カッコつける」

【InDesign】選択文字列にパーレン(かっこ)を付加するスクリプト「カッコつける」

公開日:2017年3月15日 

 一括置換できる場合はそうでもないですが、文字をパーレンでくくるのは地味に面倒な作業です。どうしてもピンポイントで(しかも何箇所か)パーレンをつけないといけないとき、単語じゃなくて文章を囲むときなどはキーボードを打つのが少々億劫になります(見ればわかるとはいえ全角/半角打ち間違えたり、「かっこ」で変換してなかなか目的のパーレンにたどりつけなかったり)。

少々面倒なカッコの指定

 これらの状況を少しでも楽にしたいので、選択文字列にパーレンを付加するスクリプトを作成しました。ただ、パーレンの種類が自分の仕事で主に使うものに偏っているのはご勘弁ください…

 コレで単語1個あたり1秒くらい早くできるかもしれません(「かっこ」で変換して対象文字を中にコピペする手順と比べた場合)。実戦投入が楽しみです。


操作手順

1.任意のテキストを選択します。


2.スクリプトを実行します。テキストを選択している場合、付加するパーレンを選択するダイアログが表示されます。この中から選択したパーレンで文字列がくくられます※。作例では上から2番目の「」ボタンを選択しています。ちなみにデフォルトでは3番目に選択された状態です。

 選択するボタンはラジオボタンなので、Windowsを使っている場合「↑」「↓」キーでフォーカスを移動できます。

カッコで囲みたいテキストを選択
カッコで囲みたいテキストを選択

付加するパーレンを選択するダイアログ
付加するパーレンを選択するダイアログ

選択したパーレンで文字列がくくられる
選択したパーレンで文字列がくくられる

※本文でのパーレン入力を想定しているので、パーレンは全角です。プログラムなど、半角パーレンを求められる場合の使用には、当スクリプトを使用後、[検索/置換]で該当箇所を半角化するなどの対処が必要になります。


 「何も選択していないとき」「テキストフレーム内にカーソルを立てただけのとき」「テキストフレームそのものを選択しているときにはアラートが出て中断します。

テキストを選択していない場合
テキストを選択していない場合


スクリプト本文

スクリプト本文を見る


/*カッコつける
  選択文字列を、ダイアログで選んだパーレンでくくります
  動作:InDesign CS5~
  */


var selobj = app.activeDocument.selection[0];//選択範囲。文字を選択しているときは選択部分全部で1個と数える

//rt1-8まで置換設定
function rt1(){
      var repTxt=selobj.contents.replace(seltxt, "("+seltxt+")");
      var repObj=selobj.texts[0].contents = repTxt;
      }
    
function rt2(){
      var repTxt=selobj.contents.replace(seltxt, "「"+seltxt+"」");
      var repObj=selobj.texts[0].contents = repTxt;
      }

function rt3(){
      var repTxt=selobj.contents.replace(seltxt, "["+seltxt+"]");
      var repObj=selobj.texts[0].contents = repTxt;
      }

function rt4(){
      var repTxt=selobj.contents.replace(seltxt, "『"+seltxt+"』");
      var repObj=selobj.texts[0].contents = repTxt;
      }

function rt5(){
      var repTxt=selobj.contents.replace(seltxt, "{"+seltxt+"}");
      var repObj=selobj.texts[0].contents = repTxt;
      }
    
function rt6(){
      var repTxt=selobj.contents.replace(seltxt, "“"+seltxt+"”");
      var repObj=selobj.texts[0].contents = repTxt;
      }
    
function rt7(){
      var repTxt=selobj.contents.replace(seltxt, "\""+seltxt+"\"");
      var repObj=selobj.texts[0].contents = repTxt;
      }

function rt8(){
      var repTxt=selobj.contents.replace(seltxt, "\'"+seltxt+"\'");
      var repObj=selobj.texts[0].contents = repTxt;
      }

//ダイアログ設定
exDia = app.dialogs.add({ name:"カッコつける", canCancel:true });
with(exDia.dialogColumns.add()){
  with(borderPanels.add()){
    staticTexts.add({staticLabel:"カッコの種類"});
    var reptxtButtons = radiobuttonGroups.add();
    with(reptxtButtons){
      radiobuttonControls.add({staticLabel: "( )",id:1,index:1});
      radiobuttonControls.add({staticLabel: "「 」",id:2,index:2});
      radiobuttonControls.add({staticLabel: "[ ]", checkedState:true,id:3,index:3});//直に入力しづらいパーレンを優先
      radiobuttonControls.add({staticLabel: "『 』",id:4,index:4});
      radiobuttonControls.add({staticLabel: "{ }",id:5,index:5});
      radiobuttonControls.add({staticLabel: "“ ”",id:6,index:6});
      radiobuttonControls.add({staticLabel: "\" \"",id:7,index:7});
      radiobuttonControls.add({staticLabel: "\' \'",id:8,index:8});
      }
    }
  }

//ダイアログで選択された項目を取得
var rtb = reptxtButtons.selectedButton;

try{
  var seltxt=selobj.contents;//選択文字列
if((selobj==0)||(seltxt==false)||(selobj.constructor.name==="TextFrame"))//テキストフレーム選択時に動いてしまうのを回避
{
  alert("テキストを選択してください");
  }
else{
  //ダイアログ表示
  var Diashow = exDia.show();
  
  if(Diashow==true){
    switch(reptxtButtons.selectedButton){ //どのボタンを押しているかで分岐
        case 0: /* ( )のボタンの場合*/
        rt1()
        break;
        case 1: /* 「 」のボタンの場合 */
        rt2()
        break;
        case 2: /* [ ]のボタンの場合 */
        rt3()
        break;
        case 3: /* 『 』のボタンの場合 */
        rt4()
        break;
        case 4: /* { }のボタンの場合 */
        rt5()
        break;
        case 5: /* “ ”のボタンの場合 */
        rt6()
        break;
        case 6: /* " "のボタンの場合 */
        rt7()
        break;
        case 7: /* ' 'のボタンの場合 */
        rt8()
        break;
        default:exDia.destroy();//終わったらダイアログによるメモリ解放
        }
      
    }else{
    exDia.destroy();
    }
};
}
catch(e){
  alert("テキストを選択してください");
  };


タグ:


  • 最近の投稿

  • カテゴリー

  • 月別の記事

  • おことわり

     Adobe、InDesign、Illustrator、Photoshop、Acrobatは、Adobe Systems Incorporated(アドビシステムズ社)の米国および他の国における商標または登録商標です。本サイトでは、RおよびTMを省略しております。