021.【ID】複数の表の外罫を一括設定
※未完成
書いたコード
#targetengine "setOuterBorder" var myDoc = app.activeDocument; var myTblStyles = []; for (var i = 0; i < myDoc.allTableStyles.length; i++) { myTblStyles.push(myDoc.allTableStyles[i].name); } myTblStyles.push("全ての表"); var pageLen = myDoc.pages.length; var myClrs = myDoc.colors.everyItem().name; for (var i=myClrs.length;i>=0;i--){ // 無名カラーを除外 if (myClrs[i]==""){ myClrs.splice(i,1) } } var myStrokeStyles = app.strokeStyles.everyItem().name; var sel = myDoc.selection; var myWindow = new Window("dialog", "外罫設定"); myWindow.alignChildren = "left"; myWindow.add("statictext", undefined, "範囲:"); var myGroup1 = myWindow.add("group"); var myRB1 = myGroup1.add("radiobutton", undefined, "ページ"); var myRB2 = myGroup1.add("radiobutton", undefined, "ストーリー"); var myRB3 = myGroup1.add("radiobutton", undefined, "テキストフレーム"); var myRBSize = [90, 20] myRB1.preferredSize = myRB1.preferredSize = myRB1.preferredSize = myRBSize; var myTgtPages = myWindow.add("edittext", undefined, "ページを選択した場合は範囲を絶対番号で指定してください"); myWindow.add("statictext", undefined, "対象:"); var myTgtStyle = myWindow.add("dropdownlist", undefined, myTblStyles); myWindow.add("panel", [0, 0, 300, 3]); var myGroup2 = myWindow.add("group"); var myTxt2 = myGroup2.add("statictext", undefined, "線幅:"); var myValue2 = myGroup2.add("edittext"); var myGroup3 = myWindow.add("group"); var myTxt3 = myGroup3.add("statictext", undefined, "線の種類:"); var myValue3 = myGroup3.add("dropdownlist", undefined, myStrokeStyles); var myGroup4 = myWindow.add("group"); var myTxt4 = myGroup4.add("statictext", undefined, "カラー:"); var myValue4 = myGroup4.add("dropdownlist", undefined, myClrs); var myGroup5 = myWindow.add("group"); var myTxt5 = myGroup5.add("statictext", undefined, "濃淡:"); var myValue5 = myGroup5.add("edittext"); var myGroup6 = myWindow.add("group"); var myValue6 = myGroup6.add("checkbox", undefined, "線のオーバープリント"); var myGroup7 = myWindow.add("group"); var myTxt7 = myGroup7.add("statictext", undefined, "間隔のカラー:"); var myValue7 = myGroup7.add("dropdownlist", undefined, myClrs); var myGroup8 = myWindow.add("group"); var myTxt8 = myGroup8.add("statictext", undefined, "間隔の濃淡:"); var myValue8 = myGroup8.add("edittext"); var myGroup9 = myWindow.add("group"); var myValue9 = myGroup9.add("checkbox", undefined, "間隔のオーバープリント"); var myTxtSize = [70, 0] myTxt2.minimumSize = myTxt3.minimumSize = myTxt4.minimumSize = myTxt5.minimumSize = myTxt7.minimumSize = myTxt8.minimumSize = myTxtSize; var myValueSize = [150, 0] myValue2.minimumSize = myValue3.minimumSize = myValue4.minimumSize = myValue5.minimumSize = myValue6.minimumSize = myValue7.minimumSize = myValue8.minimumSize = myValue9.minimumSize = myValueSize; var start = myWindow.add("button", undefined, "実行"); start.onClick = function () { // 対象によって分岐 // ここ積み残し setTblStroke(); } myWindow.show(); // 外周設定関数 function setTblStroke(myTblsArr, myStroke) { for (var i = 0; myTblsArr.length; i++) { myTblsArr[i].topBorderStrokeWeight = leftBorderStrokeWeight = rightBorderStrokeWeight = bottomBorderStrokeWeight = myStroke[0]; myTblsArr[i].topBorderStrokeType = leftBorderStrokeType = rightBorderStrokeType = bottomBorderStrokeType = myStroke[1]; myTblsArr[i].topBorderStrokeColor = leftBorderStrokeColor = rightBorderStrokeColor = bottomBorderStrokeColor = myStroke[2]; myTblsArr[i].topBorderStrokeTint = leftBorderStrokeTint = rightBorderStrokeTint = bottomBorderStrokeTint = myStroke[3]; myTblsArr[i].topBorderStrokeOverprint = leftBorderStrokeOverprint = rightBorderStrokeOverprint = bottomBorderStrokeOverprint = myStroke[4]; myTblsArr[i].topBorderStrokeGapColor = leftBorderStrokeGapColor = rightBorderStrokeGapColor = bottomBorderStrokeGapColor = myStroke[5]; myTblsArr[i].topBorderStrokeGapTint = leftBorderStrokeGapTint = rightBorderStrokeGapTint = bottomBorderStrokeGapTint = myStroke[6]; myTblsArr[i].topBorderStrokeOverprint = leftBorderStrokeOverprint = rightBorderStrokeOverprint = bottomBorderStrokeOverprint = myStroke[7]; } }
メモ
分からなかったこと
- everyItem()
var myClrs = myDoc.colors.everyItem().name;
はできる。
var myTgtStyles =myDoc.allTableStyles.everyItem().name; これはできひんのか
はできない。
- 条件分岐
どこかでswitch...caseは悪手というような説を見たような気がするのだけど、ではどうすればいいのか。
条件分岐を関数にするというような記事も見かける。