DTP作業者にとっての難易度 ★☆☆☆☆(1)
【2019.6.15】『Word文書の体裁(ルビ・文字飾り・脚注など)をInDesignに反映する』(http://mottainaidtp.seesaa.net/article/467138279.html)にて文字飾りや文字色、蛍光ペン、脚注などの処理も含む一連の作業手順を整理しました。併せてご覧ください。
※2021.1.29/サンプルデータを更新しました(選択した部分のみ処理するスクリプトを追加)。
※2021.5.5/サンプルデータを更新しました(「all_txt2ruby」テキストフレームがグループ化されているケースに対応)。
※2021.5.7・14:30/サンプルデータを更新しました(「all_txt2ruby」画像を読み込んだグラフィックフレームが存在するケースに対応)。
※2021.5.7・19:00/サンプルデータを更新しました(「all_txt2ruby」try-catchの不足を追加)。
※2022.2.20/サンプルデータを更新しました(「all_txt2ruby」アラートの文言を修正)。
JavaScriptを使うとInDesignのさまざまな作業を自動化することができます。
普段からプログラミングに従事していないDTP作業者(私もその一人です)にとって目的どおりのスクリプトを書くことは簡単ではありませんが、完成したスクリプトを使用するのはとても簡単です。
ここでは、私が書いてみたルビ処理のJavaScriptをご紹介します。必要があれば、ページ下部よりサンプルデータをダウンロードしてDTP作業者の方に使ってもらってください。
編集者の作業
文字原稿の段階では、このように親文字(ルビをつけられる側の文字)の直前にゲタ(〓)を入力し、ルビ文字を《 》内に書いておきます。

モノルビにしたい場合は《ぎょ らん ざか》のようにルビ文字を全角スペースで区切ります。《たかまつのみやてい》のように全角スペースで区切らないとグループルビになります。
DTP作業者の作業

(追記)
以下は参考にしたサイトです。ありがとうございました。【11)ルビ処理支援WORDコピペ版 - たけうちとおるのスクリプトノート】
サンプルデータ(2021.1.29版-修正前)はこちら《txt2ruby_2021_0129a.zip》です。
サンプルデータ(2021.5.5版-グループに対応)はこちら《txt2ruby_2021_0505b.zip》です。
サンプルデータ(2021.5.7・19:00版-グラフィックフレームに対応・修正)はこちら《txt2ruby_2021_0507b.zip》です。
サンプルデータ(2022.2.20版)はこちら《txt_ruby_2022_0220c.zip》です。
※最新版にjsxファイルは4つ入っています。「all_txt2ruby-20210128a.jsx」は上記「kakko_ruby.jsx」を整理したもの、「sel_txt2ruby-20210128a.jsx」は選択した部分のみ処理するものです。なお「ruby2txt」はルビを解除するスクリプトです。
初めまして、デザイナーをしております。舘山と申します。
このスクリプトに大変興味を持ちご連絡させていただきます。
編集からもらったテキストが原稿が、まさにこのページにあるものと同じでしたので試してみたのですが、下記のエラーメッセージが出てしまいます。
++++
Javascriptエラーです!
エラー番号:1
エラー文字列:
変換方法:main
++++
こちらの作業環境は、MacOS10 InDesignCS6です。
最近、InDesignを使い始めたばかりの初心者なのですが、よろしければ対処方法などありましたら、ご伝授いただけないでしょうか?
突然のご連絡すみません。
よろしくお願いいたします。
舘山拝
コメントありがとうございます。
実は私自身もJavaScriptはヨチヨチの勉強中でして、
お書きいただいたエラーの内容を判断できずにおります。
詳しい知人たちにも相談したいと思います。
少々お時間をいただけますでしょうか。
何名かの知人よりOSX(10.9)のCS6で問題なく動いているとの報告をもらいました。
舘山さまの環境でもサンプルファイルで問題なく置換されるかどうか、まずはご確認いただけますか。
なお、ルビでエラーの原因として考えられることとして、知人から以下のアドバイスをもらいました。
1)〈〉が閉じてないなどのマーキングミス。
2)同じマーク(〓とか〈〉を)をどこかで使っていないかどうか。
3)それの箇所が手動でもルビがふれるかどうか。
これらについてもご確認ください。
質問へのご回答、ありがとうございました。
テキスト原稿をサンプルのものに変えたところ、
無事解決致しました。
便利なスクリプト、とても助かりました。
重ねてお礼申し上げます。
舘山拝
照山さんのこのスクリプト、先日初めて実務で使ってみました。
とても便利なのですが、下記3点、気になりました。
1.間違えてスクリプトを叩いてしまったときにキャンセルできない
2.最後に表示されるルビ置換の結果の数が正しくない
3.空白文字など、標準機能では設定できない文字にもルビが振れる=修正できなくなる
環境はOS 10.10、InDesign CS6です。
1.について、僕自身で1行目を下記に置き換えて使いました。
if (!confirm("前面ドキュメントに対して実行します\rルビの目印以外の〓と《》がある場合は注意してください\r実行しますか?")){
exit();
}
もしよければ参考にしてください。
2.について、本文2箇所しか置換してないのに、脚注内10個、表内94個、ほか54個などと、大量に置換したように表示されます。
3.について、特殊な文字など(ホワイトスペースやここまでインデント文字などの特殊文字、マーカー類)があればエスケープする処理があった方がよいと思われます。
以上です。
もうしばらく手が一杯なので、時間ができてから試してみたいと思います。
Uske_SさんのほうがはるかにJavaScriptに詳しいので、いろいろ教えてください。
いつもありがとうございます。
もしお時間できたらご連絡ください。
少しはお手伝いできると思いますので。
この書き込みにメアドつけました。
初めまして、突然のご連絡申し訳ありません。
こちらのようなスクリプトを探しており、使用させていただきました。ありがとうございます。
その使用させていただきましたところ、
グループ化されたテキストフレームに対しては
処理できない感じでしょうか?
単体では作動するのですが、∞の置き換えで
終了してしまうのでご質問させていただきました。
スクリプトもインデザインも初心者なのですが、
ご教授いただけましたら幸いです。
コメントをありがとうございます。
ドキュメント全体を処理対象とする「all_txt2ruby-20210128a.jsx」は
ご指摘の通りグループ化していると処理が実行できませんね(想定しておりませんでした)。
改良も検討いたしますが今のところいつになるかは分かりません。申し訳ありません。
なお、選択した箇所のみを処理対象とする「sel_txt2ruby-20210128a.jsx」では
グループ化されているフレームでもテキストを選択した状態での処理が可能だと思います。
当面はこちらのスクリプトで使い方を工夫していただければと存じます。
承知致しました。
sellの方のスクリプトをぜひ使わせて頂きたいと思います。
また、勉強させて頂きます。
本当にお返事をくださり、ありがとうございました。
よろしければお試しください。
下記エラーメッセージが出てきてしまいました。
エラー 番号:55
エラー 文字列:Object does not support the property or method 'textFrames'
行:3
ソース:app.doScript("doMain() ", Script Language.JAVASCRI PT,
[] ,UndoModes.fastEntireScript);
申し訳有りません、
また対応して頂きありがとうございます。
コメントをありがとうございます。
画像を読み込んだグラフィックフレームがあると
うまく動かないようですね。
改良を検討したいと思います。
お手数をおかけしました。
画像が含まれると置き換えができなくなるのですね・・・
知識不足で申し訳有りませんが、記述をallPageItemsに変更することでグループ化が無視できること、勉強になりました。
・グラフィックフレームが存在するケース
・グラフィックセルが存在するケース
に対応するよう修正してみました。
よろしければお時間のあるときにお試しください。
無事変換できることを確認致しました。
また今回も内容を拝見させていただきましたが
やはり勉強不足であることを痛感いたしました。
突然の連絡に対し、迅速丁寧にご対応いただきましたこと
大変感謝いたしております。
このたびは誠にありがとうございました。
このスクリプトに大いにお世話になっている者です。ありがとうございます。
Ver.2020で問題なく使用できていたのですが
突然、スクリプトを作動させるといつまでもクルクル虹丸が回り続けて完了しない状態になってしまいました。
初期設定を捨てて最初からやり直してもダメで、今までこのスクリプト頼みだっただけに困ってます。原因はわかりますでしょうか。
Mac OS sonoma14.4です。
残念ながら、いただいた情報からは不具合の原因は分かりません。
確認ですが、サンプルデータは
最新(2022.2.20版)のものをお使いでしょうか。
参考になるかどうか分かりませんが、私であれば
以下の作業で不具合が出るかどうかを確認してみると思います。
【1】最新のサンプル内のInDesignドキュメントが問題なく処理できるか試す
【2】新規ドキュメントに該当箇所のテキスト(ごく一部のみ)をコピペして処理の可否を確認する(段落スタイルなどの書式はそのまま)
【3】別の新規ドキュメントに該当箇所のテキストを書式なしでコピペして処理の可否を確認する(書式は新規ドキュメントの基本的な設定)
【4】以上のテストで凍るようであれば【1】〜【3】の各ドキュメントを別環境(異なるOS、異なるバージョンのInDesign)で開いて試す
上記【1】〜【3】で凍らないのであれば当該ドキュメントの構造との相性なのかもしれないと想像します。たとえばルビ処理により「アンカー付きオブジェクトが微妙な位置に置かれることになる」「テキストフレームの自動サイズ調整が行われる」「段抜きや段分割の処理が行われる」あたりをまず疑うかもしれません。このあたりはドキュメントを見てみないと何とも言えませんが……。
ご返信ありがとうございます。
自分でもあれからいろいろと検証してみました。
「ルビを振って欲しいテキストボックス」のみを
残し、他のテキストボックスや画像などを全て削除した状態だとうまくいきました。
原因はわかりませんが、対策としては有効だと思いましたので、ひとまずこれでまいります。
ありがとうございます。