Mac inDesignCC2014を使っています。
ドキュメント全体の表の罫線を一回り太くすることになりました。
スタイルで固めてあれば良かったのですが、色んな形があったためスタイル適用はしていませんでした。
例えば、現状で
表全体廻り 1pt
仕切り 0.5pt
基本 0.25pt
基本を0.35ptに変更
など
任意の線幅のみを対象に検索置換的に変更出来れば良いのですが、標準機能では不可能なので手作業以外にscriptなどで何とかなる物なのでしょうか。
スキルのある方よろしくお願いします。
[17592] たいしょう (2014/12/25 Thu 10:56)
昔作ったものですが…
CS3では動作します。。。
var myScale = app.activeDocument.viewPreferences.lineMeasurementUnits;
var tmpS = "";
if (myScale == 2054188905) tmpS = "pt";
if (myScale == 2053991795) tmpS = "mm";
var sel = app.activeDocument.selection[0];
try {
sel.cells.length;
var tmp = sel.cells[0].leftEdgeStrokeWeight;
var myDlg = app.dialogs.add({name:"線幅を変更する"});
var myDlc = myDlg.dialogColumns.add();
with(myDlc.dialogRows.add()){
var tmpFind = realEditboxes.add({editValue:tmp,minimumValue:0,maximumValue:800});
staticTexts.add({staticLabel:tmpS + "の罫線を"});
}
with(myDlc.dialogRows.add()){
var tmpChange = realEditboxes.add({editValue:tmp,minimumValue:0,maximumValue:800});
staticTexts.add({staticLabel:tmpS + "に変更する"});
}
flag = myDlg.show();
} catch(e) {
alert("セルを選択してください。");
exit();
}
var findWeigth = tmpFind.editValue;
var changeWeigth = tmpChange.editValue;
if (flag == true & findWeigth != changeWeigth) {
for (i = 0; i < sel.cells.length; i++) {
try {
if (sel.cells[i].leftEdgeStrokeWeight == findWeigth) {
sel.cells[i].leftEdgeStrokeWeight = changeWeigth;
}
} catch(e) {}
try {
if (sel.cells[i].rightEdgeStrokeWeight == findWeigth) {
sel.cells[i].rightEdgeStrokeWeight = changeWeigth;
}
} catch(e) {}
try {
if (sel.cells[i].bottomEdgeStrokeWeight == findWeigth) {
sel.cells[i].bottomEdgeStrokeWeight = changeWeigth;
}
} catch(e) {}
try {
if (sel.cells[i].topEdgeStrokeWeight == findWeigth) {
sel.cells[i].topEdgeStrokeWeight = changeWeigth;
}
} catch(e) {}
}
}
[17593] dot (2014/12/25 Thu 13:07)
dot 様
回答ありがとうございます。
早速試させていただきました。
しかしながらCS3からはかなり変わったのでしょうか、「サポートしないプロパティ、メソッドが含まれています」と言うことで1行目でストップしてしまいました。
後学のために因みにですが、このscriptはドキュメント全体の表(複数の表)に対しての作用でしょうか?それとも選択したセル(表)内での作用でしょうか。
[17600] たいしょう (2014/12/25 Thu 17:43)
あら…ダメでしたか。
申し訳ないです。
スクリプト的には選択したセルに対して処理するものです。。。
[17603] dot (2014/12/25 Thu 18:22)
試してもいないので分からないのですが、一行目を
var myScale = app.activeDocument.viewPreferences.strokeMeasurementUnits;
にして何とかなりませんか…?
[17604] dot (2014/12/25 Thu 19:15)
dot 様
ありがとうございました。
小窓が出現して無事に動作しました。
そこでまたまたお願いと言っては何ですが、変更したい表が多いので、其の都度線幅を入力するのも大変です。
取り敢えず元数値と変更後数値を記憶させるか固定させたいのですが可能でしょうか。
[17607] たいしょう (2014/12/25 Thu 23:01)
無事に動いたようで良かったです。
元数値は
var tmp = sel.cells[0].leftEdgeStrokeWeight;
を
var tmp = 任意の数値;
に、
var tmpChange = realEditboxes.add({editValue:tmp,minimumValue:0,maximumValue:800});
を
var tmpChange = realEditboxes.add({editValue:任意の数値,minimumValue:0,maximumValue:800});
に
それぞれ変更すればいけるかと…
テストしてないですが、たぶん動くのではないかと。
[17608] dot (2014/12/26 Fri 09:44)
dot 様
ありがとうございます。
最初から数値が入力されている状態で、かなり作業が捗りました。
今回私にとってこのscriptは非常に有意義な物となりました。
感謝致します。
Indesignにとって表はオブジェクトではなく、タグで書き出し可能と言うことで、どちらかと言うとテキストの仲間なのかも知れません。何れ標準で検索置換に項目が加えられることを期待したいと思います。
[17615] たいしょう (2014/12/27 Sat 18:05)