win10 / CC2021
PCスペックCore i7 / 8G
スクリプト初心者です(正規表現部分しか読めません)。
スクリプトを公開している方のお力をお借りして作業させていただいています。
表組みで100p、2500行の名簿を作成しています。
所々セルをつなげる所があるのですが、スクリプトを使用すると、処理に30分以上かかってしまいます。
出来れば15分以内におさめられると手動より効率的だと思うのですが、どこをいじればいいのか、もしくは表組みマージ処理とは時間がかかるもので、これ以上どうすることも出来ないのかわかりません。
横方向のセル結合なので、
http://mottainaidtp.seesaa.net/article/464707628.html
こちらのマージ部分だけ使わせていただいて、
つなげたい所に「⊂」を入れて処理しても、
https://www2.rocketbbs.com/11/bbs.cgi?id=thats&mode=pickup&no=4241
こちらのrowsをcolumnsにし、
こちらは逆につなげたくない空セルに適当な文字をおいて処理しても、
時間的にはあまり変わりません。
堪え性がないので…ESCを押して処理を中断するのですが、そうすると、二番目の方が途中からでも作業が出来るのでありがたいですが、一番目の方がテキストの下処理が楽です。
もし高速化のヒントがありましたら教えていただけないでしょうか?
そしてやりたいことを実現させてもらった、元のスクリプトを作成してくださった方に感謝申し上げます。
[20563] shishi (2021/06/30 Wed 21:44)
抜けてました!
インデザインCC2021です!
[20564] shishi (2021/06/30 Wed 21:45)
データの量によってはコレクションの読み込みにとっても時間がかかるらしいので、
ループ回数がかさむとそこでかなりの差がつくらしいです。
ので、
//空のセルに∈∋を入力
var myRows = myTable.rows;
for ( j = c-1 ; j >= 0; j-- ) {
for ( i = r-1 ; i >= 0; i-- ) {
if(myRows[i].cells[j].contents==""){
myRows[i].cells[j].contents="∈∋";
}
}
}
for ( j = c-1 ; j >= 0; j-- ) {
for ( i = r-1 ; i >= 0; i-- ) {
try{
if(myRows[i].cells[j].contents=="⊂"){
myRows[i].cells[j].merge(myTable.rows[i].cells[j-1]);
}else if(myRows[i].cells[j].contents=="∩"){
myRows[i].cells[j].merge(myTable.rows[i-1].cells[j]);
}
としてみればちょっとけっこう変わるかもしれません。
(試してませんすみません)
[20565] (z-) (2021/07/01 Thu 12:08)
すみません地味にミスってました。。
掲示板ではバックスラッシュが\に化けてしまうのでコピペ後に直してあげてください。
//空のセルに∈∋を入力
var myRows = myTable.rows;
for ( j = c-1 ; j >= 0; j-- ) {
for ( i = r-1 ; i >= 0; i-- ) {
var myRow = myRows[i];
if(myRow.cells[j].contents==""){
myRow.cells[j].contents="∈∋";
}
}
}
for ( j = c-1 ; j >= 0; j-- ) {
for ( i = r-1 ; i >= 0; i-- ) {
try{
myRow = myRows[i];
if(myRow.cells[j].contents=="⊂"){
myRow.cells[j].merge(myRow.cells[j-1]);
}else if(myRow.cells[j].contents=="∩"){
myRow.cells[j].merge(myRows[i-1].cells[j]);
}
app.findGrepPreferences.findWhat = "\r[⊂∩]";
app.changeGrepPreferences.changeTo = "";
myTable.changeGrep();
}catch(e){}
}
}
[20566] (z-) (2021/07/01 Thu 12:44)
mottainaidtpの者です
スクリプトをお試しいただきありがとうございます。
(z-)さんにご指摘いただいた部分、
効率をしっかり考慮しておらずお恥ずかしいです。
あと、今回のケースですと
縦方向の結合が必要ないようですので
それに関連する部分をカットすることで
少しは速くなるかもしれない……と思っています。
「⊂と∩」も使わず
空ならマージ……という処理にすれば良さそうですね。
すぐにはできないのですが、
私も試してみたいと思います。
[20567] mars517 (2021/07/01 Thu 13:49)
必要最小限にしてみました。
どうでしょう。
https://mottainaidtp.up.seesaa.net/image/2021_0701a.zip
セルまたはテーブルを選択して実行します。
空に見えてもスペースなどが入力されていると
結合されないと思います。
ドキュメントの黄色部分はヘッダ、赤い部分はフッタです。
こういうことでよろしいでしょうか。
[20569] mars517 (2021/07/01 Thu 17:02)
先に示したドキュメントを2500行にして
先のスクリプトで処理してみたところ
当方の環境では20分弱かかりました。
これだけの時間ただ待つにも不安だと思うので
選択部分のみに対して同じ処理をするように
書き換えてみました。
https://mottainaidtp.up.seesaa.net/image/merge_B.zip
トータルの処理時間は
あまり変わらないように思いましたが
こちらを使ってページごとあるいは見開きごとに処理したほうが
精神衛生上は良いかもしれませんね。
[20572] mars517 (2021/07/02 Fri 14:04)
(z-)さま
mars517さま
コメントありがとうございます!
まさか、mottainaidtpの中の方にコメントいただけるとは!
もともと、50分程かかっていたものが、
(z-)さまのコードを実行したところ、40分程でした!
しかし、タスクマネージャーを起動しながらやっていたのですが、HDDに負荷がかかっていたので、バックで何か動いていたのかもしれません。
もう少し早く動作するかもです。
お時間割いていただきありがとうございました。
そして、mars517さまには検証までしていただいた上に表全体と選択セルの2パターンも…本当に恐縮です。
私の環境では表全体で10分から17分程でした。
かなり早く出来ました!
実作業に活用できそうです!
選択セルの方もかなり使えそうです。
使い分けさせていただきます。
スクリプトを活用してヒューマンエラーなく時間を短縮出来そうです。
御二方とも初心者にお付き合いいただきありがとうございました!
[20574] shishi (2021/07/02 Fri 20:55)