表中テキストを差し替えるスクリプト

[7343]表中テキストを差し替えるスクリプト 投稿者:げば 投稿日:2005/10/11(Tue) 17:53
いつも大変お世話になります。

MAC OSX10.4.2 InDesignCS2を使ってます。

以前、コチラで紹介していただいておりました、市川せうぞー様がお作りなったスクリプト(Table Replace_OSX)を InDesignCSで大変ありがたく使わせていただきました。

このたび、 InDesignCS2を初めて使用して、表中テキストを差し替えようと、以前のスクリプトを実行したら、エラーがでて使うことができませんでした。
標準機能として、新しいInDesignCS2に取り入れられてもなさそうですね、、、ということで大変恐縮ですが、CS2用のスクリプトはお考えでしょうか?

とても身勝手なお話ですが、よろしくお願いします。
» 1
[7343へのレス]Re: 表中テキストを差し替えるスクリプト 投稿者:市川せうぞー 投稿日:2005/10/11(Tue) 21:20
ありゃりゃ、ほんとだ^^

すいませんでした。
急遽、絆創膏をあててみました。
#うーん、うちで公開すべきなのか。。。w

(*
Table Replace (c)2003 www.seuzo.jp
2003.6.5 YUJIさんの要請でちょっと書いてみた。
2005.10.11 Indesign CS2用

InDesignの表中の内容を差し替えます。
クリップボードのタブ区切りテキストを表の各セルにペーストします
●使い方
1)タブ(もしくは改行)区切りのテキストをクリップボードにコピーしておきます。
2)差し替えたい表のセルを選択しておきます。
3)このスクリプトを走らせます。
*)

tell application "Adobe InDesign CS2_J"
activate

--クリップボードの確認と取り込み
if (clipboard info for string) is not {} then --クリップボードのテキストが空でなかったら
set clip_str to (the clipboard) as Unicode text --変数にセットしちゃう

if clip_str ends with return then --選択範囲の最後が改行文字なら
set clip_str to text 1 thru -2 of clip_str --最後の改行文字だけを削除
end if
else
my my_error("クリップボードが空です", true) --クリップボードが空なら中止
end if

--リスト処理
set old_dlimit to AppleScript's text item delimiters --現在のデリミタを保存
try
set AppleScript's text item delimiters to {return} --デリミタを変更
set tmp_list to every text item of clip_str --デリミタでリストにへんかん
set AppleScript's text item delimiters to {tab} --デリミタを変更
set cell_list to {}
repeat with i in tmp_list
set contents of i to my my_replace(contents of i, "【改行】", return) --【改行】という文字列を「改行文字」に変換
set cell_list to cell_list & (every text item of contents of i) --デリミタでリストにへんかん
end repeat
on error errMsg number errNum
set AppleScript's text item delimiters to old_dlimit --デリミタをリストア
my my_error(errMsg & return & errNum, true) --エラーが起こったら中止
end try
set AppleScript's text item delimiters to old_dlimit --デリミタをリストア

--確認
if (not (exists selection)) or ¬
class of selection is not cell and ¬
class of selection is not table and ¬
class of selection is not row and ¬
class of selection is not column then
my my_error("セルを選択してください", true) --セル以外を選択しているなら中止
end if
set count_cell_list to length of cell_list --クリップボードのセルの数
set count_table to count cell of selection --テーブルの選択セル
if count_cell_list is not count_table then --セル数とタブ区切りテキストの数が違うなら
if count_table > count_cell_list then --セルの数の方が多い
my my_error("選択しているセルの方が" & (count_table - count_cell_list) & "個多いです。" & return & "それでも処理を続けますか?", false)
else
my my_error("選択しているセルの方が" & (count_cell_list - count_table) & "個少ないです。" & return & "それでも処理を続けますか?", false)
end if
end if

--実行
try
set contents of selection to cell_list
on error errMsg number errNum
my my_error(errMsg & return & errNum, true) --エラーが起こったら中止
end try

end tell


----------------------------------●文字列置換
to my_replace(theText, orgStr, newStr)
set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to orgStr
set tmpList to every text item of theText
set AppleScript's text item delimiters to newStr
set tmpStr to tmpList as text
set AppleScript's text item delimiters to oldDelim
return tmpStr
end my_replace

----------------------------------●エラー処理
on my_error(err_str, my_stop)
if my_stop then
set my_stop to {"中止"}
else
set my_stop to {"中止", "続行"}
end if
tell application "Adobe InDesign CS2_J"
activate
set ans to button returned of (display dialog err_str buttons my_stop) --警告ダイアログ出してストップ
if ans is "中止" then error number -128
end tell
end my_error

» 2
[7343へのレス]Re: 表中テキストを差し替えるスクリプト 投稿者:げば 投稿日:2005/10/12(Wed) 09:04
神様、仏様、市川せうぞー様。。感謝です^^

ありがとうございました。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア