[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
(DTPtechNote:1487) Table Replaceもどき
はじめまして。
(BBS内の)スクリプトを参考にさせていただいています。
「Table Replace」をまねして以前、JavaScriptを書いてみたのがあります。
(【改行】という文字列を「改行文字」に変換する機能は省いてしまいました。)
クリップボードに貼付けたテキストをそのままでは弄れなさそうだったので、テキストフレームをひとつ作ってそこにペースとしてから弄っています。
CS2で動作を確認しています。
// クリップボードのタブ区切りテキストを表の各セルにペーストします
CR = String.fromCharCode(13); //改行
TAB = String.fromCharCode(9); //タブ
TBL = String.fromCharCode(0x16); //表組
if (app.selection.length == 1){
var tblObj = app.selection[0];
switch (app.selection[0].constructor.name){
case "Cell":
case "Table":
case "Row":
case "Column":
break;
default:
break label;
}
var clipAry = new Array();
var myDoc = app.activeDocument;
with (txtfrmObj = myDoc.textFrames.add()){
visibleBounds = ["0cm","0cm","18cm","21cm"];
contents = "ダミー";
app.selection = characters.itemByRange(0,-1);
app.paste();
while (characters[-1].contents == CR) characters[-1].remove(); //最後の改行を削除
var clipstr = "" + contents;
}
if (clipstr == TBL){
clipAry = txtfrmObj.tables[0].contents;
} else if (clipstr != ""){
var tmparray = clipstr.split(CR);
for (var i=0; i < tmparray.length; i++) clipAry = clipAry.concat(tmparray[i].split(TAB));
}
txtfrmObj.remove();
if (tblObj.cells.length == clipAry.length){
try {
tblObj.contents = clipAry;
}
catch(e) {
alert("表組への貼付けに失敗しました。");
}
}
label:
}