InDesign居残り補習室

どれだけ勉強しても上達しない管理人の、InDesign備忘録を中心に。たまにブックレビューなども。

スポンサーサイト  --/--/--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


[JavaScript]TableReplaceもどきコピペ版  2008/11/04

TableReplaceもどき使用例のレスにおいて、バイカモさんが書き込んでくださった訂正版スクリプトを私の環境(winXP sp2/CS3 v5.0.4)で動作チェックした結果、良好に動作したのでご紹介します。
バイカモさんの了解を得ましたので、以下にスクリプトの内容を記述いたします。
なお、バイカモさんの前回のレスもご参照ください。

では、追記から。バイカモさんが書いてくださったJavaScriptです。


// クリップボードのタブ区切りテキストまたは表組(の一部)を選択された表の各セルにペーストします。
//
// 一時的にテキストフレームを作成し、そこにクリップボードからペーストしています。
// ペーストされたものが表組でない(つまり、タブ区切りテキスト)場合には表組に変化しています。
// セル内のテキストを順次コピー&ペーストする形に改めました。
// 2008.11.4/10:05

CR = String.fromCharCode(0x0D); //改行
TAB = String.fromCharCode(0x09); //タブ
TBL = String.fromCharCode(0x16); //表組

main();

function main(){
  var tblObj = app.selection[0];
  switch (app.selection[0].constructor.name){
    case "Cell":
    case "Table":
    case "Row":
    case "Column":
    break;
    default:
    errorMsg("テキストを置き換える表組内を選択してください。");
    break;
  }
  var myDoc = app.activeDocument;
  with (txtfrmObj = myDoc.textFrames.add()){
    visibleBounds = [0,-myDoc.documentPreferences.pageWidth,myDoc.documentPreferences.pageHeight,0];
    contents = "ダミー";
    app.selection = characters.itemByRange(0,-1);
    app.paste();
    while (characters[-1].contents == CR) characters[-1].remove(); //最後の改行を削除
    var clipstr = "" + contents;
    if (clipstr != TBL){
      app.selection = characters.itemByRange(0,-1);
      app.selection[0].convertToTable(undefined,undefined,1);
    }
  }
  if (tblObj.cells.length > txtfrmObj.tables[0].cells.length){
    txtfrmObj.remove();
    errorMsg("置き換えを行うテキストが選択したセルよりも少ないので中止します。");
  } else if (tblObj.cells.length < txtfrmObj.tables[0].cells.length){
    txtfrmObj.remove();
    errorMsg("置き換えを行うテキストが選択したセルよりも多いので中止します。");
  } else {
    try {
    for (var i=0; i < tblObj.cells.length; i++){
      app.selection = txtfrmObj.tables[0].cells[i].characters.itemByRange(0,-1);
      app.copy();
      try {
        app.selection = tblObj.cells[i].characters.itemByRange(0,-1);
      } catch(e) {
        app.selection = tblObj.cells[i].insertionPoints[0];
      }
      app.paste();
    }
    txtfrmObj.remove();
  } catch(e) {
    txtfrmObj.remove();
    errorMsg("表組への貼付けに失敗しました。");
    }
  }
}

function errorMsg(str){
  alert(str);
  exit();
}
スポンサーサイト

やってみましたよー。無事成功!
環境はいきさんと同じwinXP sp2/CS3 v5.0.4と、
winXP sp2/CS2 v4.0.5、
macOS10.4.11/CS2 v4.0.5です。
梅花藻さん、いきさんありがとうございました。
#JavaScriptをコピー・ペーストすると改行がなくなってしまう(私だけ?)のはご愛嬌か・・・(^^;)

WinとMacのCS2での検証、ありがとうございます^^

>改行がなくなってしまう
Macでコピペしたら改行がなくなったのですか?
Windowsでメモ帳やワードパッドにコピペしても改行がなくなりますか?
(もっとも、私はエディタはWZ Editor4かEmEditorしか使っていませんが)

コピペはWindowsです。(to秀丸)
メモ帳、ワードパッドでも同じです。なんででしょ。
スクリプト以外の箇所は大丈夫(改行される)なんですけど。
むしろ、今Mac(Safari3.1.2)でやってみたら(to Jedit)きちんと改行されました・・。
IEが6だからでしょうか。(会社の指定なのだ!!)

そうですか……。
私の端末はFireFox3です。
未検証だけど、多分IE5以上なら普通に改行の状態でコピペできると思うんですけれどもね。。。

IE7でもコピーした時点で改行がなくなりますね。どうもIEでは<br />を改行に変えてくれないみたいです。
(本題と関係ないところですいません)

>>お~まちさん
あ、IEだとだめだったんですかっ……(^^;
いえいえ、報告ありがとうございます。
検証もせず、改行の状態でコピペできるなどと見当違いのレスをしてすみませんでした>るるさん

コメントの投稿





管理者にだけ表示を許可する

トラックバック

http://kstation2.blog10.fc2.com/tb.php/312-2a772c66

(新しい記事)← [JS]CropMarksを改造してみた
2年も経てば…… →(古い記事)

 | HOME | 

カレンダー

05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

FC2カウンター

2006年3月28日カウント開始

Amazon

FC2 Affiliate

動くPDF

プロフィール

あわせて読みたい

あわせて読みたいブログパーツ

最近の記事

最近のコメント

最近のトラックバック

Lc.ツリーリンク

RSSリンク

直感カテゴリーツリーV1.1

ブログ内検索

ブロとも一覧

marumi

神楽崎 ゆう


■ ブログ名:I'm writing NOVEL

七篠 銀字


■ ブログ名:風と夜空と氷の国

MS


■ ブログ名:へなちょこDTP

桜桃


■ ブログ名:追憶の桜吹雪

瑪瑙 輝遊


■ ブログ名:千里の道も一歩から

magatu


■ ブログ名:unsigned

暁 鷲 (あかつき しゅう)


■ ブログ名:空を裂け!

NewMark

C-Roll


FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。