top
 

InDesignCS3で、aiデータのレイヤー表示非表示を試したのでメモします。
お仕事で頼まれていたのですが、実際に使う事はなく試しただけだったので、今後の為に。

通常は「オブジェクト」メニューから「オブジェクトレイヤーオプション」を選択して設定をするか、再リンクする際に「読み込みオプション」を表示させて設定することができます。

  • レイヤーの表示

var imgObj = app.activeDocument.pages[0].allGraphics[0];
//リンク画像の1 番上のレイヤー名を表示
alert(imgObj.graphicLayerOptions.graphicLayers[0].name);
//リンク画像の上から2層目のレイヤーを表示
imgObj.graphicLayerOptions.graphicLayers[1].currentVisibility = true;
//リンク画像の上から4層目のレイヤーを非表示
imgObj.graphicLayerOptions.graphicLayers[3].currentVisibility = false;

  • リンク更新時のオプション設定

//「レイヤーの可視性を使用」
imgObj.graphicLayerOptions.updateLinkOption = UpdateLinkOptions.applicationSettings;
//「レイヤーの可視性オーバーライドを維持」
imgObj.graphicLayerOptions.updateLinkOption = UpdateLinkOptions.keepOverrides;

こんな感じ。

同じようなオブジェクトをなるべくひとつのイラレファイルだけでを扱いたい時等に使えるかも。
レイヤー名も取得できるからレイヤー順がバラバラでも名前で判別できるかもしれないですねー。

 
 

しばらくぶりの更新です。
といっても、DTPは全く関係ないのですが…。

いくら面白い話をしようとしても、興味を惹かせようとしても、相手に対してボケ倒す行為が良いというわけがない。
本当に面白くて吹き出してしまうものならともかく、流れ的に笑わなければならない物を連続して言われ続けると突っ込む側としては疲れる。
特に、ツッコミによってきちんとしたボケへと昇華させないといけない場合(「あなたは今面白い事を言いましたね」と相手に伝える、いわばヨイショしなければならないタイプのボケ)は本当に疲弊する。
基本的にボケって、相手に「今俺おもしろいこと言ってるよ!」っていうことでしかなく、それをツッコミが立てているわけで、それはボケている人が気持ちいいだけであり、もうそれが作業的に形骸化しちゃうと、ある種自慢話をして悦に浸ることと何ら変わりがない。

一番心地よいのは、ボケ合ってツッコミ合う形であろうと思う。
まあボケとツッコミで考える必要は全然なくて、要はお互いに言葉をやりとりするだけでいいんだけど。
そこにはお互いに対するリスペクトが存在し、その話を面白い方向へと向かわせようとする意思が大変心地よい。
そうではないにしても、話す方も聞く方も、相手が何を話したいのか、何を聞きたいのか、そういうのを少し考えて話をするだけで全然印象が違うと思うんだけどね。
一方的に話すにしても、それまでにそういったやりとりがあれば、こちらも素直に聞き役に回れるし、それこそいつも聞いてくれる人ならば「いつも聞いてもらってるし、今日はしっかり話を聞こう」って思えるし。

普段のやりとりがあるからできる、ツッコミなんだろうな、と思う。
だから少しでも「対話」をしてくれる人であるのならば、流れ的に笑わなければならないものであっても、ツッコミによって昇華されるものであっても、全力で聞くよ!ノるよ!拾うよ!笑うよ!ツッコむよ!なんだかんだ言って会話って普通に楽しいしね!

裏を返すと、自分もしょうもない出来事つらつら述べ倒すだけの時もあるので(しかも笑ってくれみたいなニュアンスで)ある意味自戒の意味を込めた文章なのでした。ちゃんちゃん。

(まあ要はさ、俺だって話したいことがあるんだよ…スルーすんなよ…ってことだよ。
それを素直に言えない自分にも責任はあるんだろうね。
あとは、もしかしたら俺が相手の話に興味ないのかもな。これ致命的。興味ありゃ聞くもんなきっと。)

 
 

お久しぶりです。burugeです。
ちょいちょいと仕事用にスクリプトを書いたりしているのですが、あまりにニッチすぎたり、なんだか忍びなかったりして、アップしていませんでした。
ただ、そういうことしているとどんどん自分の中でブログ更新のハードルが上がって行くし、こういう事に対するモチベーションも下がる一方で全然良い事ないってことに気がついたので、今日は一つアップしてみます。何事もアウトプットですよね。

複数のInDesignドキュメントに対して、同一のIllustratorやPhotoshopのファイルがリンクしてあるとします。
そのリンクファイルに変更を加えた場合、複数のInDesignドキュメント側でリンクの更新を行わなければなりませんが、あまりに数が多い場合「開く」→「リンク更新」→「上書き保存」というのもそれなりにめんどくさい作業です。
そこでリンクの更新作業を一気に行うスクリプトを作成しました。
※ただし一つのフォルダに複数のInDesignドキュメントが格納してある場合に限ります

/*

複数のInDesignドキュメント上のリンクを更新して上書き保存するスクリプト

スクリプトを実行し、InDesignドキュメントが保存されているフォルダを選択すると、フォルダ内のInDesignドキュメントのリンク更新をして上書き保存を行います。

2009.11.05 作成 MacOS10.5.2 InDesignCS3で動作確認
buruge
http://buruge.net

*/
if(app.documents.length > 0){
alert(”ドキュメントを閉じてください。”);
exit();
}
fldObj = Folder.selectDialog (”更新したいInDesignドキュメントのあるフォルダを選択してください”);
if(fldObj){
fileList = fldObj.getFiles(”*.indd”);//フォルダ内のファイル一覧を取得
for(var i=0;i<fileList.length;i++){
//ダイアログアラート回避(スクリプトが止まるので)
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.NEVER_INTERACT;
app.open(fileList[i]);//ベースInDesignを開く
//ダイアログアラートが出るように戻す
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.INTERACT_WITH_ALL
var myDoc = app.activeDocument;
var myImg = myDoc.allGraphics;
for(var j=0;j<myImg.length;j++){
myImg[j].itemLink.update();//リンクの更新
}
myDoc.close (SaveOptions.yes);
}
}

実務中に必要になって作ったものですが、このスクリプトの作成にあたってAdobeForumsの以下のディスカッションを参考にしました。

リンクの自動修復

ですので実質、質問者マコト01様と回答者市川せうぞー様のスクリプトを拝借させていただき、私はフォルダ指定を付け加えただけです。

このように参考になるスクリプトをwebで見つけたということが、今回の久々のブログ更新のきっかけでもあります。いや、いつだってwebのスクリプトを参考にしてるんですが、改めてありがたいことだなと思ったのです。
いろんな方のスクリプトを参考にしたり利用さしたりしているので、自分もニッチとか言ってないでこれからなるべくアップしていこうと思います。

 
 

InDesignにてカレンダーを作る関係で、タグ付きテキストを使ってみたので、作業に関するメモをしておきます。

作業の流れ

  1. 一ヵ月分のカレンダーのテンプレを作る
    (日付、曜日、六輝等の段落スタイルを割り当て)
  2. タグ付きテキストを書き出す(略書・Unicode)
  3. ネットで2010年のエクセルカレンダーをDLし、CSVに変換
  4. PHPで、タグ付きテキストの段落スタイル名とCSVを照合させるスクリプトを作って使用
  5. 改めてテンプレにタグ付きテキストを流し込む

とてもスムーズに12ヵ月分のカレンダーが作れました。
初めて使ったけど、XMLよりもシンプルで分かりやすいなぁという印象。
PHPは自分が変換する用なのでインターフェースも全然考えなくていいから超らくちん。

そのPHPをかませる関係で「Unicode」で書出しをした。
するとタグ付きテキストは「UTF-16LEのLF改行」で書き出される。
で、miでUTF-8に変換してからPHPで照合させたんだけど、改めて「UTF-16LEのLF改行」に変換し直してからInDesignに読み込ませないと、きちんと流し込まれないので注意、と。

文字コードに関してはいきさんの

InDesign居残り補習室 タグ付きテキストと文字コード

を参考にしました。

 
 

7月25日は第14回DTPの勉強部屋が開催されますよー。

第14回勉強会のお知らせ – DTPの勉強部屋

まあいろんなDTP関係の方のブログにてお知らせされているので、今更うちで言う必要もないとは思うのですがw

今回はスクリプトデーだそうで、僕はもう申し込みをすませてきました。

一応懇親会の方も参加にしているので、いろんな方と情報共有できたら良いなあと思っています。そのためにも、今まで作業してて上手く行かなかったこととかリストアップしといたほうがいいのかな。
そうじゃなくても皆さんがいろいろと技術的な話をしているのを聞くのは楽しいので、当日参加される方はぜひぜひよろしくお願いします。
(2009.06.29追記)都合により懇親会には参加できなくなりました><
また次の機会を楽しみに、セミナーの方に集中しまくります。

とか言って、当日は普通に会社の名刺を出しますので、ごく一部の方以外「ぶるげ」かどうかなんて分からないとは思いますが…。
まあ…他のブログにコメントしたりとか、掲示板で発言したりとかしてないので、それはそれでいいかな。

ホントは僕だけじゃなくて、うちのチームの他の人にも参加してほしいんだけど、ミーティングで告知してみたら皆スクリプトって聞いただけで「ああそれはぶるげ君の専門分野だよね」的な空気に。
別に書けるようにならなくていいから、どういう時に使えるかとか、そういうのを感覚として知って欲しいのに…。

まあ、普段からもっとちゃんとそういうことをチームの皆に伝えきれてないのがいけないのかな、とも思う次第です。
今回勉強部屋で聞いたことは報告書にただ書き連ねるだけじゃなくて、ちゃんと発表の場を設けて部署内にしっかりと伝えた方が良いのかもしれない。

ああ、なんか書いてたらすごいワクワクしてきたw
たけうちとおるさんとPsychoCatさんがどんな話をされるか楽しみです!

 
 

前の投稿からずいぶんと時間が経ってしまいましたw
今回、画像が配置されていないフレームにマップされているXML属性(href=”〜”)の部分を全て削除するスクリプトを作成したので公開してみます。
ひとつ前の投稿は、InDesignでXML扱うのはデリケートですよねって話だったと思います。
で、その作業中にちょっと躓いてしまいまして。
以下のように画像をリンクしたファイルがあるじゃないですか。


↑XMLの属性にもしっかりと画像のアドレス(href=”~”)が表示されている。

でね。
「画像は消すけど、フレームと構造は残しておきたい」って時があるんです。
XML的にはXML内の要素がからっぽってことで「ここには画像が入らなかった」という意味合いを持たせたいんですね。
そういう訳で、フレームから画像のみを削除するんですが…。
属性の画像のアドレスは消えないんです。

上は、1番3番はフレームから画像を消したものになっています。
2番は画像が残ってます。
構造パネルではどう表示されているかというと…

1番はドキュメント上から画像は消えているのに「属性」の画像アドレスは残ったまま。
2番は、構造パネルから「属性」の画像アドレスだけを消しててみたですが、ひとつ前のキャプチャを見ての通りアドレスがなくても画像は生きている。
3番はこうなって欲しいっていう理想形。フレームから画像を削除、構造パネル上からも「属性」も削除、という風に2工程を踏んだものです。

ドキュメント上から画像を消しても属性が残ったままだと何が怖いかって、XML書き出したものに消したはずの画像アドレスが残ってて、レイアウトで画像を入れていますよって判断されてしまうってことなんです。
後からこのXMLを整形してCSVにし、テキスト納品する立場としては、使われていないはずの画像情報が存在しちゃうのは困ってしまう。

じゃあ画像を消すときは構造パネルから属性も削除するという作業を追加するのかと言えば、確実にひと手間増えるし、オペレータ的にはあまり構造パネルを直接いじるのはデリケートなものなので控えたい、と。

なので、ひとまず組版作業ではフレームから画像を消すという作業だけを行ってもらい、構造パネル内の属性の削除は組版後に一気に自動でやってしまおう、ということでスクリプトを作成したわけです。

/*

画像が配置されていないフレームにマップされているXML属性(href=”〜”)の部分を全て削除するスクリプト

※グループのオブジェクトは、1階層目のグループまでしか見ません。グループ内グループへの適用は不可。

プログレスバーは古籏 一浩さんの
「組版時間を半減する!InDesign自動処理実例集」を参考にしました。
グループ内のフレームを見に行くスクリプトは
http://gyoniso.blogspot.com/2008/05/indesign_26.html
を参考にしました。

2009.04.21 作成 InDesignCS3用
buruge
http://buruge.net

*/
//target CS3_J
#target “InDesign-5.0″
if(app.documents.length == 0){//ドキュメントが開かれているかの判定
alert(”ドキュメントが開かれていません。ドキュメントを開いてから再実行してください”);
exit();
}

deflg = confirm (’画像の配置されていないXML属性(href=”〜”)の部分を全て削除します。\rよろしいですか?’);
if(deflg == true){
pageObj=app.activeDocument.pages;
var pbarWidth = 400;
var max = pageObj.length;
var pbarPanel = createProgressBarPanel(max, pbarWidth,”処理中…”);
pbarPanel.show();
for(i=0;i<max;i++){
pbarPanel.progressBar.value = i;
if(pageObj[i].rectangles.length>0){
var prObj = pageObj[i].rectangles;
XML2path(prObj);
}
if(pageObj[i].groups.length>0){
var grpObj = pageObj[i].groups;
for(k=0;k<grpObj.length;k++){
var gObj = grpObj[k].rectangles;
XML2path(gObj);
}
}
}
pbarPanel.close();
alert(”完了しました。”);
}else{
alert(”中止しました。”);
}

function XML2path(recItm){
for(j=0;j<recItm.length;j++){
if(recItm[j].associatedXMLElement != null&&recItm[j].allGraphics[0]==null){
try{
recItm[j].associatedXMLElement.xmlAttributes.item(0).remove();
}catch(e){
}
}
}
}
//プログレスバー
function createProgressBarPanel(maxValue, pBarWidth, message){
var pBar = new Window (”window”, “画像配置”);
pBar.msg = pBar.add(”statictext”, [12,12,pBarWidth,32], message);
pBar.progressBar = pBar.add(”progressbar”, [12,32,pBarWidth,54], 0, maxValue);
return pBar;
}

以下のような、画像は消したのにXML属性にアドレスが残っているファイル。

これに対してスクリプトを実行すると、、、

属性が削除されます。
これでXMLを書き出しても、存在しない画像アドレスは書き出されない、と。

 

XMLも使いよう。

by buruge ~ 5月 1st, 2009
 

ここのところ、XMLを利用した組版作業をしています。

お客様から支給される商品データCSVを、PHPを利用してXML形式変換し、あらかじめ内容はからっぽのダミーのXMLタグと連動させたレイアウトパターンを作っておいて、そこに変換したXMLを流し込むという作業です。
この作業をする理由は、校了後に、レイアウト上の文字データを項目ごとに書き出して改めてCSVに戻す作業が発生するためです。
組版中にバンバン内容の修正が入るので…。

な んというか、XMLと連動しているレイアウトデータは本当にデリケートですよね。レイアウト画面だけを見て、てきとうにコピペしたり削除したりすると、構 造側のXMLがどんどん崩壊していったり、レイアウト画面からは消えてるのに、構造にはしっかり残っていたり、最終的にうまくCSVに戻せなくなる。
分かってはいるけど、自分も含めて今まで絵だけを見て組版していたオペレータの人たちには余計に神経使わせているなぁとちょっと心苦しいです。

商品データとかであるなら、先にデータベースを完璧にしといて、そこから出力したCSVを流し込みさえしちゃえば、後から戻すなんてことしなくてすむのにね。
その事に関するこっちとお客様の双方のメリット的なものをもっと明示できないと、きっとこれからもこのままなんだろうなぁ。
流し込みだけで見れば、あくまで現場での作業効率が上がるっていうメリットくらいのもんで、とりあえず印刷物が出来上がればいいと思ってるお客様からしてみれば、それに合わせて自分たちの作業フローを変えるなんてことはしないですよねきっと。

(しかしまあ、最後にレイアウトデータから商品テキストを抽出してまとめるって作業を、サービスみたいに扱う営業ってなんなんだろう…。同じ内容のものをもう一個作るのと同じくらいの労力あるっていうのに。)

でも、XMLが流し込めるのは便利と言えば便利ではある。
形さえしっかり決めちゃえば、上から上から流し込めるのですごい楽。
商品データが後追いで来ても、あらかじめ入ってくるのが分かっていればタグつきフレーム作ってとりあえずダミー入れとけば、あとからXML流し込むだけでデータが更新できちゃうもんね。
問題はXMLにはページの概念がないので、流し込んだ順に生成されちゃうってことだけど、まあこれはキーになる管理NOみたいなものを、XMLにも商品CSVにもたせておくことで解決するでしょう。

で、そのXMLを扱うレイアウトに関する補助的なスクリプトを作成しましたよーってエントリーにするはずだったんだけど、なんかちょっと愚痴っぽく長くなったので分けようと思いますw

 
 

とっても今更なのかもしれないけど、自分用メモだからいいよね。

InDesignをJavaScriptで制御(3)

禁則処理とか文字組アキ量設定とか、日本版特有の機能をjavascriptで制御しようにもリファレンスに載ってなかったりして、なかなかうまく行きません。
調べていると、同じように調べておられる方がみえたのでメモさせて頂きました。

kinsokuSetとかmojikumiとかなんかそのまんまと言えばそのまんまだけど…こういうのってオブジェクトモデル見て頑張って見つけるしかないんだよね?
がんばろん。

 
 

以前うpしてみた、InDesignにリンクしてあるEPSを同じ名前のPSDとAIに再リンクするスクリプト。
CS4ではフォルダに再リンクすることができるようになって、このスクリプトもあまり寿命は長くないのかもしれないですが、今まで使う中で少しエラーとかも出ていたので、修正したものを改めて晒してみたいと思います。

修正点は

・ページアイテムがEPSではないImage画像を読み取るとエラーで止まるので回避。
・拡張子のないEPSも再リンクできるようにした。(つまりファイル名が一緒であればEPSでなくても問答無用)

の2点です。相変わらず日本語ファイル名は処理できません。

/*

EPSデータを同じ名前のPSD,AIに再リンクするスクリプト

使い方:
再リンクするデータをひとつのフォルダに集めておき、InDesignドキュメントを開いてからスクリプトを実行してください。
再リンクするデータのあるフォルダを指定すると、そこからEPSと同じ名前のPSDとAIを探し出してリンクをし直します。
再リンクできなかったファイルがある場合はアラートが出ます。

注意:
Mac専用、日本語のファイル名ではうまく動作しない場合があります。
また、このスクリプトで何か異常が起こっても責任は負いかねます。

2008.08.06 作成
2009.02.23 EPSではないImage画像を読み取るとファイルパスが得られずエラーで止まるので修正
2009.03.06 拡張子のないEPSも再リンクできるようにした
buruge
http://buruge.net

*/

if(app.documents.length == 0){//ドキュメントが開かれているかの判定
alert(”ドキュメントが開かれていません。ドキュメントを開いてから再実行してください”);
exit();
}
folderName = Folder.selectDialog (”再リンク画像のあるフォルダを選択して下さい”)
if(!folderName){exit();}
psdList = folderName.getFiles(”*.psd”);
aiList = folderName.getFiles(”*.ai”);
app.pdfPlacePreferences.pdfCrop = PDFCrop.cropArt;//AIの配置オプション「アート」に設定

pageObj=app.activeDocument.pages;
for(i=0;i<pageObj.length;i++){
if(pageObj[i].allGraphics.length>0){
for(j=0;j<pageObj[i].allGraphics.length;j++){

nameObj=”";
if(pageObj[i].allGraphics[j].itemLink != null){//EPSではなく埋め込みImageをアイテムとして取得してしまった場合に回避する
fp = pageObj[i].allGraphics[j].itemLink.filePath;//画像のファイルパス取得
fname = fp.split (”:”);//:でファイルパスを分解
fn = fname[fname.length-1];//分解した配列の最後にあるのがファイル名
ffname = fn.split(”.”);//.でファイル名を分割
if(ffname.length>2){//拡張子前以外にファイル名に”.”ドットがあったとき対策
nameObj =ffname[0];
for(jj=1;jj<ffname.length-1;jj++){
nameObj =nameObj+”.”+ffname[jj];
}
}else{
nameObj = ffname[0];//分解するとひとつめが名前で、二つ目が拡張子になるのでひとつめを選ぶ
}

if(ffname[ffname.length-1]==”eps”||ffname[ffname.length-1]==”EPS”||ffname[ffname.length-1]==nameObj){

for(k=0;k<psdList.length;k++){
pn = psdList[k].name;
pName = pn.split (”.”);
if(pName.length>2){//拡張子前以外にファイル名に”.”ドットがあったとき対策
pNameObj=”";
pNameObj=pName[0];
for(kk=1;kk<pName.length-1;kk++){
pNameObj=pNameObj+”.”+pName[kk];
}
}else{
pNameObj = pName[0];
}
if(pNameObj==nameObj){
try{
pageObj[i].allGraphics[j].place(psdList[k]);
}catch(e){
alert(pn+”:”+e);
}
}
}

for(l=0;l<aiList.length;l++){
an = aiList[l].name;
aName = an.split (”.”);
if(aName.length>2){//拡張子前以外にファイル名に”.”ドットがあったとき対策
aNameObj=”";
aNameObj=aName[0];
for(kk=1;kk<aName.length-1;kk++){
aNameObj=aNameObj+”.”+aName[kk];
}
}else{
aNameObj = aName[0];
}
if(aNameObj==nameObj){
try{
pageObj[i].allGraphics[j].place(aiList[l]);
}catch(e){
alert(an+”:”+e);
}
}
}
}
}
}
}
}
alert(”完了しました。”);

余談ですが、このスクリプトよりも
Update path names in links
こっちの方が便利ですよw(上の晒し台無しw)
市川せうぞーさんがブログで紹介されていたもので、日本語のファイル名もきちんと再リンクしてくれます。
ただ、指定したフォルダの下層フォルダにも同じ名前のファイル(旧EPSとか)を退避させたりしていると、そっちに再リンクしたりするので、旧ファイルは全く別の場所に退避させたほうがいいかもしれません。

で、このスクリプト、僕の環境では日本語ファイル名は再リンクするのに英文ファイル名を再リンクしないことが多々有りまして。
自分で書いたスクリプトも併用、みたいな感じになってます。
今回拡張子無しも再リンクするようにしたので、二つを使うことで、うまく作業を完結できてるのかな。(自画自賛乙)

 
 

久しぶりにスクリプトあげてみます。

ブツ切れテキストを結合するスクリプト。
IllustoratorCS3用です。

たまにCADデータや、エクセル等から作ったPDFや、昔の環境で作成したPDFをIllustoratorで開いて作業しないといけない場合がありますよね?無かったらここでこの話はおしまいw
そういった際に、図面は問題なく編集できても、テキストがブツ切れ状態でとってもめんどくさいことがあります。
(「もやしまつり。」というテキストがあった場合「も」「やし」「ま」「つり」「。」という具合に切れる。)
これはオブジェクトの順番さえきちんと整っていれば、そのバラけたテキストを選択してコピーし、改めてテキストツールでペーストしてやると結合されます。

↓ちなみに、そのコピペでの結合方法@DTP駆け込み寺過去ログ様
http://bbs.ddc.co.jp/mt/dtpbbs/archives/_20040205021443.html

ただ、細々したテキストが沢山あった場合にコピペし続けるのもめんどくさいです。
そこで今回は結合したいブツ切れテキストを結合してくれるスクリプトを作成してみました。

と、ここまで書いて、なんかそういえばこういうのあったぞ?と不安になってぐぐってみたら

ひゃー!イラレで便利の倉田タカシさんが作ってたー!!
http://d-p.2-d.jp/ai-js/pages/01_scripts/text/index.html#12_text_joint_char
「テキスト連結(たてバラ・よこバラ)」
CS2用のスクリプトを、うちのCS3&MaxOSX環境で試してみたところ、問題なく動きました。
これ使えば解決ですw

ただ、一応勉強がてら書いてみたのでのっけてみまーす。おかしいところとかあれば指摘いただけると嬉しいですし…。
「テキスト連結(たてバラ・よこバラ)」と違うのはグループ化しい点です。
たぶんグループ化するメリットがあるはずなので、スクリプト読まなきゃ。

改行とかは全然考えてないので、横一行のみ有効です。
縦も一応試してみたんだけど、いずれもデータ上の書き込み順に並ぶ感じです。
また、文頭の書体に統一されます。途中で違う書体が使われていたとしても文頭の書体に置き換わってしまうので気をつけてください。
詰めもめちゃめちゃになるかも。
なんか良いとこなしだな(^^;

/*

ブツ切りテキスト結合.jsx

動作確認:MacOSX 10.5.2 IllustratorCS3
このスクリプトで何か異常が起こっても責任は負いかねます。

2009.02.12 作成
buruge
http://buruge.net

*/

if(app.documents.length > 0){//ファイルが開かれているか判定
var sel = activeDocument.selection;
if(sel.length > 1){//オブジェクトが二つ以上選択されているか
var selList = activeDocument.selection;
for(i = 0 ; i < sel.length ; i++){//選択した中にテキストオブジェクト以外がないか確認
if(selList[i].typename != “TextFrame”){
alert(”テキストオブジェクトを二つ以上選択してください。「”+selList[i].typename+”」が含まれています。”);
i = sel.length+1;//エラー判定
}
}
if(i == sel.length){//エラー判定でどうだったか
for(j = sel.length-2 ; j > -1 ; j–){//横書き文字の場合、右側から取得してるっぽいので、逆からループをまわす
selList[sel.length-1].contents = selList[sel.length-1].contents+selList[j].contents;
selList[j].remove();
}
}
}else{
alert(”テキストオブジェクトを二つ以上選択してください。”);
}
}else{
alert(”ドキュメントが開かれていません。”);
}