-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchangeColumnsWidth.jsx
64 lines (61 loc) · 1.85 KB
/
changeColumnsWidth.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
var widths = {
0: "fill",
1: "",
2: "20mm",
3: "16mm",
4: "30mm",
5: "fill"
};
!function () {
if (!app.documents.length || !app.selection.length) {
alert("ドキュメントを開き、表かセルを選択してから実行してください");
return;
}
var doc = app.activeDocument;
var sel = doc.selection[0];
if (sel.constructor.name !== "Table" && sel.constructor.name !== "Cell") {
alert("表かセルを選択してください");
return;
}
if (sel.constructor.name === "Cell") {
sel = sel.parent;
}
app.doScript(function() {
var C = sel.columns;
var txfWidth = (function () {
var g = sel.parent.geometricBounds;
return g[3]-g[1];
})();
var fillCells = {
ary: Array(C.length),
sum: 0
};
for (k in widths) {
var kNum = parseInt(k,10);
try {
if (isNaN(kNum) || kNum > C.length-1) {
throw new RangeError("widthsオブジェクトのキーが対象外の列を指定しています");
}
} catch(e) {
alert(e);
return;
}
if (widths[k] && widths[k] !== "fill") {
C[k].width = widths[k];
txfWidth -= C[k].width;
} else if (widths[k] === "fill") {
fillCells.ary[k] = true;
fillCells.sum++;
} else {
txfWidth -= C[k].width;
}
}
var fillWidth = txfWidth / fillCells.sum;
for (var i=0; i<C.length; i++) {
if (fillCells.ary[i]) {
C[i].width = fillWidth;
}
}
alert("終了しました");
}, ScriptLanguage.JAVASCRIPT, null, UndoModes.ENTIRE_SCRIPT);
}();