• ベストアンサー

IllustratorCS(Win)のJavascriptで特定のテキストエリア選択について

IllustratorCSで「特定のテキストエリアを選択して、それを削除する」というスクリプトをJavascriptで作りたいと思っています。いろいろと調べたのですが、情報が少なく、かつ初心者なので困っています。 おわかりの方、いらっしゃいましたらお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • shut0325
  • ベストアンサー率40% (490/1207)
回答No.2

No.1です。 今回キーになるのは「エリアテキストを特定する方法を考える」ということです。その方法は単純で、テキストフレームに名前をつけるのです。 スクリプトを実行する際に、その名前のテキストフレームがあるか無いかを調べて、あった場合は書き換えをし、そもそもそのドキュメントにテキストフレームが無い場合と該当するテキストフレームが無い場合は新規に(名前つきの)エリアテキストを作る、、、という流れにすると良いかと思います。 コードは下記の様な感じになります。 もともとのコードを若干書き換えただけです。 一箇所だけ、、問題箇所がありました。 //テキストボックスを作成 textObj = activeDocument.textFrames.add(); これは不要です。文字が入っていないテキストフレームがゴミとして残ってしまいます。図形をエリアテキストにしたものに文字列(contents)を代入すればよいです。 ---以下コードです。 //初期設定:テキストフレームの名称(適当で可) textFrameName="テキストフレームの名前"; //コンテンツ準備(strTitle) editDay=new Date(); y=editDay.getFullYear(); mon=editDay.getMonth()+1; d=editDay.getDate(); h=editDay.getHours(); m=editDay.getMinutes(); s=editDay.getSeconds(); day=y+"年"+mon+"月"+d+"日"+h+"時"+m+"分"+s+"秒"; strTitle=day+String.fromCharCode(13)+activeDocument.name; //***テキストフレームがドキュメント中にあるかを確認。 //***無い場合は新規作成。 //***テキストフレームがドキュメント中にある場合は、 //***その中から該当する名前のテキストフレームを探す。 //***あったら書き換えて抜ける。無いときは新規作成。 textObjCount=activeDocument.textFrames.length; if (textObjCount>0) { for (i=0;i<textObjCount-1;i++){ if (activeDocument.textFrames[i].name=textFrameName){ activeDocument.textFrames[i].contents=strTitle; break; } } } else { MakeTitle(); } //関数:MakeTitle() エリアテキスト作成 function MakeTitle(){ //四角形のY座標、X座標、テキストエリアの幅、高さを指定 areaSize = activeDocument.pathItems.rectangle(700,260,220,50); //エリアテキストにする textBox = activeDocument.textFrames.areaText(areaSize); //***エリアテキストに文字列を入れる(strTitleの値) textBox.contents=strTitle; //***テキストフレームに名前をつける(textFrameNameの値) textBox.name= textFrameName; }

makochan07
質問者

お礼

とても勉強になりました。 テキストフレームに名前を付けることができるのですね。 やりたいことが無事解決しました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • shut0325
  • ベストアンサー率40% (490/1207)
回答No.3

No.1です。 補足を、、 今回関数を作っていますが、このような場合、関数にしなくてもぜんぜんかまいません。ただ、今回 ifやfor なども使ったので、折角だから関数も入れたほうが勉強になるかな、、、という程度で入れただけです。 混乱したようでしたら申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。
  • shut0325
  • ベストアンサー率40% (490/1207)
回答No.1

教えてください。 ・テキストエリアとはエリアテキスト(形状に文字を流し込んだもの)のことですか? それともある文章中の文字の選択範囲(レンジ)のことですか? ・「特定の」の特定の方法は? 例えば「削除」という文字を含んでいるものが対象だとか、、 また、そのスクリプトでどのような作業をされたいのかも教えていただくと精度良く回答できるのですが。

makochan07
質問者

補足

説明不足で申し訳ありません。 テキストエリアとは形状に文字を流しこんだもののことであり、文字の選択範囲ではありません。 何をしたいかといいますと、スクリプトを実行するとB5で作成したイラストの右上にそのイラストを作成した日時とファイル名を置きたいと思っています。そしてスクリプトを実行するたびに日時を更新したいのです。 以下のようなスクリプトを作成しました。これで所定の位置にテキストボックスを置いて、そこに日時とファイル名を流し込むことはできるのですが、日時を更新したいときに、一度このテキストボックスを削除して、もう一度スクリプトを実行しなければならないのです。そのため、このテキストボックスのみを削除して再度テキストボックスを置いて日付、ファイル名を流し込めるようなスクリプトにしたいなとおもいました。 なにぶん、初心者なので説明不足、認識が間違っている点が多々あるとは思いますが、よろしくお願いします。 //テキストボックスを作成 textObj = activeDocument.textFrames.add(); //テキストボックスのY座標、X座標、テキストエリアの幅、高さを指定 areaSize = activeDocument.pathItems.rectangle(700,260,220,50); //エリアテキストにする textObj = activeDocument.textFrames.areaText(areaSize); //日付とファイル名を入れる editDay=new Date(); y=editDay.getFullYear(); mon=editDay.getMonth()+1; d=editDay.getDate(); h=editDay.getHours(); m=editDay.getMinutes(); s=editDay.getSeconds(); day=y+"年"+mon+"月"+d+"日"+h+"時"+m+"分"+s+"秒"; //ドキュメント名を取得 docName=app.documents; filename=docName[0].name; //エリアテキストに日付とファイル名を表示 textObj.contents=day+String.fromCharCode(13)+filename;

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • プルダウンでテキストエリア表示Javascript

    JavaScriptをはじめて扱う初心者です。 このサンプルのテキストエリア(複数行)をプルダウンで内容を変更できるようにしたいと思っています http://www3.plala.or.jp/moananja/iroiro/Material/Calculator/Calc3.html プルダウンで項目Aを選択すると  AAA  AAA  AAA 項目Bを選択すると  BBB  BBB とテキストエリアに代入されるような機能を付けたいのですが、どのように書いたらよいでしょうか? ネットで検索して、テキストエリアに代入する方法は下記で見つけたのですが、上のサンプルスクリプトと繋げ方が分かりませんでした ご教授よろしくお願いいたします http://q.hatena.ne.jp/1190481115

  • テキストエリアの選択行番号を返す関数

    下記のようなJavaScriptで、削除ボタンが押されたときにテキストエリアの何行目が 選択されているかを返す関数を作成途中なのですが、残りの部分がわかりません。 どうすれば、実現できるのか教えていただけないでしょうか。 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>ホームバンキング</title> <script language="javascript"> <!-- document.form1.display.focus(); // テキストエリアにまずフォーカスを与える function select_row(){ // テキストエリアの何行目がクリックされているかを返す関数 var textarea = document.getElementById('display'); // テキストエリアのHTMLエンティティを取得 for(var i=0; i<textarea.length; i++){ if() break; // テキストエリアのi行目が選択されていたら、 } //document.form1.display.select(); // テキストエリアを選択状態にする return i; } //--> </script> </head>

  • Javascriptでテキストエリアにタグの制限をかけたいです。

    フォームで、テキストエリアの作成をしましたが、 迷惑メールで、テキストエリアにタグを入れて来るようになってしまったのですが、 テキストエリアへ、タグが入らないようにする、javascriptとかはありますでしょうか? あれば教えて下さい。

  • 入力するテキストエリアをボタンで増減させるjavascriptを作りたい。

    こんにちわ, 現在javascriptを学習しています。 たとえば,メールボックスとかで着信拒否のメールアドレスを入力するテキストエリアが10個あって,「増やす」のボタンがつくと,それが11個になるようなスクリプトは作ることが可能なのでしょうか。 また参考になるページがあれば,教えてください。 よろしくお願いします。

  • Win版IllustratorCS3でJavascriptを使ってファイルを開くスクリプトを作成できずに困っています。

    Windows版IllustratorCS3でJavascriptを使ってファイルを開くスクリプトを作成しています。Web上で以下のようなソースを見つけたので参考にしていますが、ファイルを開くことができず困っています。 web上で以下のサイトを参考にして、IllustratorCS(Win)でJavascriptを使ってepsファイルを開くスクリプトを作成しています。 http://www.openspc2.org/book/IllustratorCS3/easy/file/001/index.htm... 以下のように作成しましたが、sample.jsという名前で保存して、Illustratorの「ファイル」-「スクリプト」から選択しても画面上にファイルが表示されません。どなたか原因をお分かりの方がいらっしゃいましたら教えていただけないでしょうか。 filename = "C:/tmp/test.eps"; fileObj = new File(filename); flag = fileObj.open("r"); if (flag == true) { alert("ファイルを開きました"); fileObj.close(); }else{ alert("ファイルが開けませんでした"); }

  • javaScriptで、テキストエリアのある文字列を見つけて、

    javaScriptで、テキストエリアのある文字列を見つけて、 その行から、1行目と2行目を消すという処理を行いたいのですが、 コーディングがわかりません。 教えて下さい。 (例) 下記のテキストエリアから、「<ターゲット文字列>」を見つけて、 その行から1行目と2行目、つまりは、「さしすせそ」と「たちつてと」を削除したいです。 -----textarea----- あいうえお かきくけこ <ターゲット文字列> さしすせそ たちつてと

  • テキストエリアの内容を印刷できるようにしたい

    宜しくお願いします。 JAVAスクリプトで作った見積もりのページがあります。 該当部分の個数を選択して、下に総計を表示させるのですが 『選択内容を表示』というボタンを押すと 更にその下にあるテキストエリアに選択した内容と総計が 表示されるようにしています。 そこで、質問なのですが、 そのテキストエリアの下に『上記内容を印刷』という ボタンをつけて、テキストエリア内の部分だけを 印刷できるようにしたいのですが、可能でしょうか? お分かりになる方がいましたら、教えてください。

    • ベストアンサー
    • HTML
  • IllustratorCS3でのJavascriptを使ったGUIコントロールについて

    IllustratorCS3でJavascriptを使ったGUIコントロールの使い方について質問です。 Javascriptで以下のようにテキストボックスの横に参照ボタンを置き、ボタンをクリックすると「ファイル選択」ダイアログを表示し、そこで選択したファイルのパスをテキストボックスに表示したいと思っています。 以下のようなソースを作成しました。 winObj = new Window("dialog","テキスト変換ツール",[100,50,330,200]); sbtnObj=winObj.add("button",[180,20,220,40],"参照"); ftxtObj=winObj.add("edittext",[10,10,180,40],"ファイル名を入力してください。"); sbtnObj.onClick=function(){ ffilename=File.openDialog("テキストファイルを指定してください。"); if(ffilename){ ftxtObj.text=ffilename; } } これですと、参照ボタンをクリックしてファイルを選択すると、テキストボックス(ftxtObj.text)に「File」と表示されてしまいます。ここには選択したファイルのパスを表示したいのですが、どなたかご存知の方がいらっしゃいましたらよろしくお願いします。

  • テキストエリアに改行入りのテキストを挿入したい。

    テキストエリアに外部から取得したテキストを読み込みたいと思っています。 そのテキストを、以下のコードのように'|'を'\n'に置換します。 このようにテキストに改行(\n)が入っていると、 オブジェクトを指定してください。というスクリプトエラーが発生するようです。 やりたいことは、テキストエリアに改行つきのテキストを挿入したい。 ということです。 何か良い方法はないでしょうか。 <script language="JavaScript"> function init(){   with(document.testform){ <% String text_abc = (String)request.getAttribute("test"); text_abc = text_abc.replace('|','\n'); %> textareaAAA.value="<%=text_abc%>";   } } </script>

  • テキストエリアに入力された語に特定の語句を附加したい

    「特定の語句+","+テキストエリアに入力された語」をフォーム送信したいと思っています。 (1)テキストエリア1(識別名=NAME1)に入力された語を調べて警告メッセージを発し、(2)この警告メッセージとテキストエリア1に入力された語を、「,」で区切った1つの文字列(識別名=NAME2)としたうえで(3)送信したいと考えています。 そこで、試行錯誤しながら、一応、下のように記述はしてみたのですが、(テキストエリア1に数字を入力した場合を除き)上手く動作しません。 つきましては、恐れ入りますが、どなたか、正しい記述をご教授いただけませんでしょうか。JAVAスクリプト全くの初心者ですが、何卒よろしくお願いいたします。 <head> <script language="JavaScript"><!-- function check() { //(1)条件にマッチしてるか判断 txt = document.myFORM.NAMAE1.value; //テキストエリア1に入力された語をtxtに data=txt.match(/a[^\&\"]*d/im); //txtが条件にマッチしてるか判断 alert1="メッセージ"; if (!data) {alert(alert1); //マッチしていない時は警告メッセージを表示 //(2)警告メッセージとテキストエリア1に入力された語を、とりあえずテキストエリア2に入れようと考えました。 n=0; n=eval(document.myFORM.NAMAE1.value); //とテキストエリア1に入力された語をnに document.myFORM.NAMAE2.value=alert1+","+n+","; //テキストエリア2に警告メッセージとnを入れようとしています //(3)そして、テキストエリア2内の語を送信 document.myFORM.submit(); } } // --></script> </head> <body> <form name="myFORM" method="post" action="**.cgi" > <A onclick="check()"><IMG src="1.gif"></A> <textarea name="NAMAE1"></textarea></td> <textarea name="NAMAE2"></textarea> </form> </body>