質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2458閲覧

Indesign でのJavaScript開発について<文字の取得・変更、検索、ログ出力方法など>

Shion_Ichikawa

総合スコア56

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

1クリップ

投稿2020/03/12 14:25

IndesignでのJavaScript開発に着手しようとしているのですが、いろいろわからないことが多く困っています。

<最終的に実現したいこと>
{スクリプト実行前}
山路を登りながら、こう考えた。
意地を通せば窮屈だ。住みにくさが高じると、<安い所へ引き越したくなる>。山路を登りながら、こう考えた。とかくに人の世は住み<にくい。どこへ越>しても住みにくいと悟った時、詩が生れて、画が出来る。
(すべてMSコジック)

{スクリプト実行後}
山路を登りながら、こう考えた。
意地を通せば窮屈だ。住みにくさが高じると、安い所へ引き越したくなる。山路を登りながら、こう考えた。とかくに人の世は住みにくい。どこへ越しても住みにくいと悟った時、詩が生れて、画が出来る。
(太文字部分のみBold&MS明朝、そのほかは全てMSコジック)

このような動作を行うスクリプトを作りたいと思っています。

<わからないこと>
いろいろ調べてみてある程度はわかったのですが、以下がわかりません。
・ドキュメントのページから取得したテキストボックスの文字の取得と変更の方法(Adobeのドキュメントにはlengthの取得方法については書いてあったのですが、中身の取得の方法についてはわかりません。)
・ログの出力の方法(某サイトでは$.write("")でできると書いてあったのですが、そもそもIndesignで出力をどこから見ればいいのかも分からず困惑しています。)
・文字の書体についての取得方法とその変更方法
・検索から複数の結果を文字インデックス(場所)の数で得る方法

本当に困っています。どなたかご教授頂けると本当に助かります。
宜しくお願いします。

s.k👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

環境がないので憶測になりますが、TextFrame.textsで拾えるのではないかと思いますが……
TextFrame

デバッガーについては諦めていて、alertで値を見ていましたが、こういうもの↓があるようですね。
Adobe製品をVSCodeで制御(Javascript) - Qiita

投稿2020/03/13 09:44

Lhankor_Mhy

総合スコア36115

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Shion_Ichikawa

2020/03/14 14:27

こんにちは!ご回答いただきありがとうございました。 TextFrameの中身の確認・変更はtextFrame.contentsで、 ログの出力は、 $.writeln(""); で行うことができました! 詳しくは自己解決方法に書いてあるのでそちらをご参照ください! 大変お騒がせしてすみませんでした。
guest

0

自己解決

・ドキュメントのテキストフレームの文字取得方法
textFrame.contentsの中身を確認したり、変更したりすることで簡単にできる!

・ログの出力の仕方(AdobeのExtendScript Toolkit CCでの開発)
$.writeln("")

・書体の変更の方法
下記のコードの通り(詳しくは完成コードを参照)

JavaScript

1var ins = selected[0].insertionPoints.itemByRange(fontData[i][0], fontData[i][1]); 2 ins.appliedFont="UD デジタル 教科書体 N-B"; 3 ins.appliedCharacterStyle.name="Bold";

・インデックスの取得方法
インデックスで検索を直接得るもの自体の機能はないので、textFrame.contentsでテキスト情報をStringとして取得した後に、自分で処理してその文字列上のインデックスで処理を行う

最終的に完成したコードは以下のようになります。
何か同じような問題抱えていて以下のコードについて説明が欲しいという方は、コメントしていただければお答えいたします(気づいていればですが。。)

ご回答してくださった方、ありがとうございました!

JavaScript

1var textFrames_All = app.activeDocument.textFrames; 2var myPH=0; 3main(); 4function main(){ 5 var selected=app.activeDocument.selection; 6 alert (selected[0].contents); 7 var dlg = app.dialogs.add({name: "Text Customizer", canCancel: true}); 8 with(dlg){ 9 with(dialogColumns.add()){ 10 with(borderPanels.add()){ 11 myPH=textEditboxes.add({editContents: "write input here", minWidth:50}); 12 } 13 } 14 } 15 if(dlg.show()==true){ 16 var input=myPH.editContents; 17 var positionS=-1, positionE=-1; 18 var fontData=new Array(); 19 while((positionS=input.indexOf("**<"))!=-1){ 20 input=input.substring(0,positionS)+input.substring(positionS+3); 21 positionE=input.indexOf(">**"); 22 input=input.substring(0,positionE)+input.substring(positionE+3); 23 var add=[positionS, positionE]; 24 fontData.push(add); 25 } 26 selected[0].contents=input; 27 28 for(var i=0;i<fontData.length;i++){ 29 var ins = selected[0].insertionPoints.itemByRange(fontData[i][0], fontData[i][1]); 30 ins.appliedFont="UD デジタル 教科書体 N-B"; 31 ins.appliedCharacterStyle.name="Bold"; 32 } 33 } 34}

投稿2020/03/14 14:35

Shion_Ichikawa

総合スコア56

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問