[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:
}