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
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だとうまくいったような気がうっすらしなくもないんですが…今は確認できないんですが…
[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
以下のスクリプトが参考になりますでしょうか。
// 表組中の選択箇所のサイズの計測スクリプト
#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("カスタム単位"); //カスタム
}
}
[2166]Re: javaScriptで選択した行・列 |
投稿者:あか |
投稿日:2009/01/11(Sun) 18:59:58
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)