スクリプトについて

[8343]スクリプトについて 投稿者:案山子 投稿日:2014/09/04 13:46:17
たびたびでスミマセン。

001 いも A
002 にく A
003 にく C
004 なす A
005 うり A

上のようにタブ等で区切った文字列を
スクリプトを使って下のように置き換えることは可能でしょうか?

001 いも A
002 にく 〃
003  〃  C
004 なす A
005 うり 〃

下に同じものがあれば、〃の記号に変換し、
左右をスペース埋めるというものです。
大変だと思いますので、可能かどうかだけでも構いません。
[8344]Re: スクリプトについて 投稿者:ななし 投稿日:2014/09/04 19:36:55
エクセルで上下2個までならば、関数で簡単にできると思います。
3個以上ですと、エクセルでもスクリプトでもわりと大変です。


001 いも A   001 いも A
002 にく A   002 にく 〃
003 にく C → 003  〃   C
004 にく A   004  〃   A
005 うり A   005 うり 〃  
[8345]Re: スクリプトについて 投稿者:流星光輝 投稿日:2014/09/05 03:22:55
Scriptだと、CSVとかで取り込んで、配列操作で加工だと思いますが、
ななしさんと同じく大変だと感じます。(事前準備とかの面倒さで)

そういう意味で、お手軽にExcelで加工用のシートを提案しておきます。

Excelの関数の組み合わせの説明は長くなるので割愛します。
# 適当に組んだのですが、キャプチャとりましたので、参考になれば幸いです…

スペースパディングはREPT関数で出力するように組んでありますが、その辺りはお好みで(^^;

attached image
[8346]Re: スクリプトについて 投稿者:流星光輝 投稿日:2014/09/05 03:26:39
右下のキャプチャが間違ってましたorz ごめんなさい。
正しいキャプチャ画像を貼っておきます。失礼いたしましたorz

attached image
[8349]Re: スクリプトについて 投稿者:通りがかり 投稿日:2014/09/05 10:56:45
次の正規表現検索置換でできました。

正規表現検索置換A(いも、にく用)
検索:\t(.+)\t(.)\r((.+\t〃\t.\r)*)(.+)\t\1
置換:\t$1\t$2\r$3$5\t〃

正規表現検索置換B(A、C用)
検索:\t([^〃])\r((.+\t〃\r)*)(.+\t.+)\t\1
置換:\t$1\r$2$4\t〃

これらをクエリに名前を付けて保存し、市川せうぞー様の「run_Queries 」にそれぞれ登録して実行すれば一度にできます。
何度も同じものが出てくる時は、スクリプトに数回ずつ登録すればいいです。

(もっと正確でスマートな正規表現が書けるといいのですが……
 ベテランの皆様から教えていただきたいです)
[8350]Re: スクリプトについて 投稿者:こに 投稿日:2014/09/05 11:15:58
InDesignのJavaScriptでも簡単に実現できます その後の処理(表に変換とかスタイル当てるとか)も一緒に組み込めるし

attached image
[8353]Re: スクリプトについて 投稿者:あるふぁ 投稿日:2014/09/05 22:34:32
indesignのテキストフレーム内に貼っ付けてあって、
文字スタイル等はまだ設定してなくて、
テキストフレームを選択しているという状況を想定して書いてみました。
「左右をスペース埋める」はやってませんが
そのへんはタブの設定とかでやることかと思いまして。

var myParagraphs=app.activeDocument.selection[0].paragraphs;
for (var i=myParagraphs.length-2;i>=0;i--){
var s="";
var a0=myParagraphs[i].contents.split("\t");
var a1=myParagraphs[i+1].contents.split("\t");
for (var n=0;n<a0.length-1;n++) s+=(a0[n]==a1[n]?"〃":a1[n])+"\t";
s+=(a0[n]==a1[n]?"〃\r":a1[n]);
myParagraphs[i+1].contents=s;
}
[8358]Re: スクリプトについて 投稿者:案山子 投稿日:2014/09/06 18:46:35
ありがとうございました。
皆様から頂いたヒントやスクリプトなどを参考に
JavaScriptでやってみたいと思います。
Indesignは、古いデータの数値修正で年に1、2度しか
さわる機会がないのですが、実に面白いソフトですね。
使う人次第でとんでもなく便利になるソフト。
またよろしくお願い致します。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)