Skip to main content
ASKST
Inspiring
February 12, 2024
Answered

Illustrator スクリプト オブジェクトの取得について

  • February 12, 2024
  • 3 replies
  • 729 views

とても初歩的な質問で申し訳ないのですが、Illustratorのスクリプトは必ず選択を介さないと編集できないのですか?

例えばすでにあるオブジェクトから特定のオブジェクトをコピーしたいとして、

var item = app.activeDocument.pageItems.getByName("テスト");

 と書いた後に、app.executeMenuCommand("copy")と("pasteInPlace")しようとしてもできないのですが、一度seletionをどこかで入れる必要があるのでしょうか。

(書き方が悪いのか、こういった取得方法のオブジェクトをseletionできてないぽいのですが…)

This topic has been closed for replies.
Correct answer ASKST

自己解決しました

アイテム.selected = true;
にすることで選択でき、コピーも可能でした

3 replies

Ten A
Community Expert
Community Expert
February 12, 2024

メニューコマンドを介しての操作が使えるのは限定的なケースもあります。まずはオブジェクトモデルをストレートに操作する手法を学んでください。

例えば、ドキュメント上の最前面にあるオブジェクトを複製する場合は、

 

app.activeDocument.pageItems[0].duplicate()

 

のようにオブジェクトに対してduplicateメソッドを利用して複製を行います。

各オブジェクトについてのプロパティやメソッドを調べるには以下のURLのPropertyExplorerを利用すると良いでしょう。

Property Explorer | Adobe Exchange

ASKST
ASKSTAuthor
Inspiring
February 12, 2024

サンプルの提示や情報提供ありがとうございます。
特有のメソッドを調べるのに苦労しておりました。助かります。

ajabon grinsmith
Community Expert
Community Expert
February 12, 2024

解決したようですがいちおう。

スクリプトでは移動、削除、カラー値変更などほとんどの操作は選択されていなくてもできるのですが、クリップボード関連(カット、コピー)の操作は選択されている必要があります。

またメニューアイテムコマンドを実行する場合も、これはスクリプト実行というよりは手で行うべきメニュー項目の実行をスクリプトから行ったというニュアンスになるため、基本的に選択範囲を対象とした処理となります。

ASKST
ASKSTAuthor
Inspiring
February 12, 2024

これはスクリプト実行というよりは手で行うべきメニュー項目の実行をスクリプトから行ったというニュアンス
この表現がとてもしっくり来ました
ありがとうございます

ASKST
ASKSTAuthorCorrect answer
Inspiring
February 12, 2024

自己解決しました

アイテム.selected = true;
にすることで選択でき、コピーも可能でした