Skip to main content
Inspiring
May 25, 2022
解決済み

AppleScript : ドキュメント設定や環境設定のウィンドウを取得したい

  • May 25, 2022
  • 返信数 3.
  • 1351 ビュー

お世話になっております。

 

AppleScriptでドキュメント設定や環境設定のウィンドウを取得したいのですが、なかなかうまくいきません。

 

tell application "Adobe Illustrator"
	activate
	execute menu command menu command string "document"
	
	tell application "System Events"
		tell process "Adobe Illustrator"
			set b to title of window 1
			display dialog b as string
		end tell
	end tell
end tell

 

これでは出来ませんでした。

window 1ではないのでしょうか。

 

教えていただきたいです。よろしくお願いします。

このトピックへの返信は締め切られました。
解決に役立った回答 monokano

そもそもドキュメント設定や環境設定はモーダルダイアログなので、それが表示されている間、Illustratorは外部からの操作や命令を受けつけません。モーダルダイアログの取得と操作をするのは不可能のはずです。

返信数 3

yopplescript
Participating Frequently
November 16, 2023

すでにご解決済みの件ですので大変恐縮なのですが、
過去にIllustratorで処理中のプログレスバーなどモーダルウィンドウをSystem Eventsで監視して、
なくなるまで待つといった処理を書いていたのですが、MacのOSが上がったどこかのタイミングで
モーダルウィンドウがSystem Eventsから取得できなくなりました。

 

添付はInDesign、Photoshop、Illustratorのそれぞれで環境設定ダイアログを出して

ウィンドウの取得を試みた結果です。

InDesignやPhotoshopは私の環境(macOS Big Sur 11.7.10)で現在でもモーダルウィンドウが取得できますが、
Illustratorは無理なようです。

 

yopplescript
Participating Frequently
November 17, 2023

失礼します。追記いたします。

ご質問でのwindowのタイトル名は未だ取得できないので

回答にはならないかもしれないですが、

illustratorのモーダルダイアログ内の要素は

System Eventsから「UI element」で取得できました。

添付はドキュメント設定ダイアログを出した状態でScriptを実行したものです。

 

モーダルダイアログは各UI elementの先頭に来るようです。

結果ウィンドウ内のトップレベルの各要素が得られました。

ですが、ウィンドウのタイトルやOK・キャンセルボタンが含まれていないので、

windowそのものにはアクセスできていないのかもしれません。

ひとまずですがダイアログで見えている要素は取得できました。

 

要素のステータスや値の変更ができるかを試したところ

本来は各要素に対しコマンド(clickやselect、setなど)で、行えるのですが、

受け付けられませんでした。

keystrokeやkey codeは有効でしたので、

例えば断ち落としの幅などを変更することができました。

yopplescript
Participating Frequently
November 17, 2023

下記にSystemEventsでkeystrokeやkey codeコマンドなどを使用して、

ドキュメントの断ち落としを5mmに変更するapplescriptを書かせていただきました。

ご参考になれば幸いです。

set target_mm to "5mm"

tell application "Adobe Illustrator"

activate

tell application "System Events"

tell application process "Adobe Illustrator"

click menu item "ドキュメント設定..." of menu "ファイル" of menu bar item "ファイル" of menu bar 1

tell UI element 1

delay 1

keystroke tab

delay 1

keystroke tab

keystroke target_mm

keystroke tab

keystroke target_mm

keystroke tab

keystroke target_mm

keystroke tab

keystroke target_mm

keystroke return

end tell

end tell

end tell

end tell

Ten A
Community Expert
Community Expert
May 25, 2022

設定ウインドウ自体の取得には意味がありませんので、Applicationの子であるPreferencesクラスの参照を考えれば良いのではないかと思います。

nekkoneko作成者
Inspiring
May 27, 2022

ありがとうございます。

別のやり方考えてみます!

monokano
Community Expert
monokanoCommunity Expert解決!
Community Expert
May 25, 2022

そもそもドキュメント設定や環境設定はモーダルダイアログなので、それが表示されている間、Illustratorは外部からの操作や命令を受けつけません。モーダルダイアログの取得と操作をするのは不可能のはずです。

Quick Timer
Inspiring
May 26, 2022

 

monokanoさんがコメントしている通り
UIを取得できないので操作できませんね
リードオンリーの値もありますが

tell application "Adobe Illustrator"
properties
end tell

とか
tell application "Adobe Illustrator"
tell the current document
properties
get ruler units
end tell
end tell


単位系ならJAVASCRIPT経由かな?
tell application "Adobe Illustrator"
do javascript "app.preferences.getIntegerPreference(\"rulerType\"); "
end tell