コモノExtendScript100本ノック

超初心者のDTPオペレーターが週にひとつスクリプトを書くブログ

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は悪手というような説を見たような気がするのだけど、ではどうすればいいのか。
    条件分岐を関数にするというような記事も見かける。

参考