javaScriptで選択した行・列

[2164]javaScriptで選択した行・列 | 投稿者:あか | 投稿日:2009/01/11(Sun) 14:27:01
いつもお世話になっております。

win・InDesignCS2で
適当な表の適当な複数のセルを選択して
列・行の番と内容を参照しようと
以下のjavaScriptを実行しました。

/////以下スクリプト///
var myselection = app.activeDocument.selection[0];
alert(myselection.name);
alert(myselection.contents);
alert(myselection.columns[0].name);
alert(myselection.columns[0].contents);
alert(myselection.rows[0].name);
alert(myselection.rows[0].contents);
/////以上スクリプト///

alert(myselection.name);や
alert(myselection.contents);だと
選択した部分を返してくれるんですが、
alert(myselection.columns[0].name);
alert(myselection.columns[0].contents);
alert(myselection.rows[0].name);
alert(myselection.rows[0].contents);
だと、表の最初の行・列の番・内容を返してきます。
そういうもんなんでしょうか?
選択した部分の行・列を参照するにはどうしたらいいでしょうか?
ちなみに、仕事で使ってるMacのCS3だとうまくいったような気がうっすらしなくもないんですが…今は確認できないんですが…
» 1
[2165]Re: CS2でのjavaスクリプトをCS3で使いたい | 投稿者:ミシマバイカモ | 投稿日:2009/01/11(Sun) 18:11:22
columnsやrowsだとうまく動かなかったと思います。
以下のスクリプトが参考になりますでしょうか。

//    表組中の選択箇所のサイズの計測スクリプト

#target indesign

main();

function main(){
   var obj = app.selection[0];
   var objname = app.selection[0].constructor.name;
   if (objname == "Cell" || objname == "Table"){
       if (objname == "Table"){
           var RowSpan = obj.rows.length;
           var ColumnSpan = obj.columns.length;
           var Name = "0:0";
       } else {
           var RowSpan = obj.rowSpan;
           var ColumnSpan = obj.columnSpan;
           var Name = obj.name;
           obj = obj.parent;    
       }
       var startNr = Name.split(":");
       var heightSum = 0;
       var widthSum = 0;
       for (var i=eval(startNr[1]);i < eval(startNr[1])+RowSpan;i++){
           heightSum += obj.rows[i].height;
       }
       for (var i=eval(startNr[0]);i < eval(startNr[0])+ColumnSpan;i++){
           widthSum += obj.columns[i].width;
       }
       var myParent = obj.parent.insertionPoints[0].parent;
       var flag = false;
       try{
           if (myParent.storyPreferences.storyOrientation == 1986359924) flag = true;
       } catch(e) {
           if (myParent.writingDirection == 1986359924) flag = true;
       }
       var myVPf = app.activeDocument.viewPreferences;
       if (flag)    alert("高さ= " + widthSum + " " + funit(myVPf.verticalMeasurementUnits) + " ,幅= " + heightSum + " " + funit(myVPf.horizontalMeasurementUnits));
       else        alert("高さ= " + heightSum + " " + funit(myVPf.verticalMeasurementUnits) + " ,幅= " + widthSum + " " + funit(myVPf.horizontalMeasurementUnits));
   }
}

function funit(a){
   switch (a){
       case 2054188905 : return("pt"); //ポイント pt
       case 2054255973 : return("Q"); // Q
       case 1514238068 : return("ap"); //アメリカ式ポイント ap
       case 2054187363 : return("p"); //パイカ p
       case 2053729891 : return("in"); //インチ in
       case 2053729892 : return("デシマルインチ"); //デシマルインチ
       case 2053991795 : return("mm"); //ミリメートル mm
       case 2053336435 : return("cm"); //センチメートル cm
       case 2053335395 : return("c"); //シセロ c
       case 2051106676 : return("アゲート"); //アゲート
       case 1516790048 : return("H"); // H
       case 1131639917 : return("カスタム単位"); //カスタム
   }
}
» 2
[2166]Re: javaScriptで選択した行・列 | 投稿者:あか | 投稿日:2009/01/11(Sun) 18:59:58
ミシマバイカモさん日曜日なのにありがとうございます。
javaScriptまだまだ勉強中なので参考になります。
いろいろと試してみます。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア