AppleScriptでFinderウインドウのサイズなどを変える、ができなくなっている.

【メインの実行環境】Mac mini M4 Pro, macOS 15.2 Sequoia

Sequoia、Monterey、Sierra のそれぞれで次のコードを実行しました(スクリプトエディタ内でスクリプトを実行).

tell application "Finder"
    set bounds of window 1 to {100, 40, 300, 200}
end tell

このうち、Sequoiaでのみ実行に失敗し、「error "Finderでエラーが起きました: AppleEventのハンドラで誤りが起きました。" number -10000」というエラーが発生します.他では正しく実行できました.

この「AppleEventのハンドラで誤りが起きました」というエラーは他にもウインドウのターゲット(パス?)を変更しようとしたり、何かとよく出てくるエラーです.

正直、何か設定が足りないからエラーが起きると思っています.ですが、何が足りないのかはわかりません.どなたかご存じないでしょうか?

Mac mini, macOS 15.2

投稿日 2024/12/31 15:39

返信
返信: 16
並べ替え順: 

2025/01/23 14:23 light289 への返信

まずは、macOSの再起動を試してみてください。Finderの内部状態が不安定になっているために発生している可能性を排除する必要があるためです。


そして、そのうえで「どのような表示状態のFinderのウィンドウ」をリサイズしようとしているのか、その画面キャプチャを投稿されるとよいでしょう。


システム設定>プライバシーとセキュリティ の中の項目設定が足りない可能性もありますが、スクリプトエディタは例外的に各種セキュリティ設定を行わなくてもScriptの実行ができるため、いまひとつその程度の処理で問題が出るとは思えません。

返信

2025/02/23 18:03 Piyomaru への返信

>macOSの再起動を試してみてください。

再起動後に実行しましたが、やはり同じエラーが表示されます.


>画面キャプチャを投稿されるとよいでしょう。

変更しようとしているのはユーザーのホームフォルダのウインドウですが、必要でしょうか.表示はカラム表示です.


>プライバシーとセキュリティ の中の項目設定が足りない可能性もありますが、

セキュリティ項目内の設定項目が足りないとわたしも思います.特にmacOS 11 以降はOSのバージョンが上がるごとに設定項目などに細かな移動があったりして、正直どこをどう設定していいのかよくわからない状態でいます.セキュリティの観点からか、以前のようにどこどこの設定をしてくださいとOS側から提示されることがなくなってから特にそれが顕著になりました.


冒頭のコードはアプリケーション形式のAppleScriptに組み込んだ一文です.このアプリケーションに与えた権限は「プライバシーとセキュリティ」タブ内の以下の項目です.

・オートメーション -> Finder -> ON

・アクセシビリティ -> ON

・ファイルとフォルダ -> フルディスクアクセス

・フルディスクアクセス -> ON

「この書き方ではわからない」のかもしれませんが、こちらもどう書けばよいかわからないので、ひとまず目についた項目を列挙した次第です.すいません.

返信

2025/02/23 22:54 T22T への返信

あの、すいません.概ね、おっしゃる意味がわかりません.オートセーブは自動保存のことだと思うのですが、少なくともスクリプトエディタにそういう機能はなかったはずですし、また、Sequoiaにしてから一度も上記スクリプトを実行できたことはありません.

機能拡張の件ですが、そもそもsiriはSequoiaをインストールしてから、正しくはクリーンインストールの最中のはじめからずっとオフのままです.あと単純にシステム設定の「機能拡張」(ログイン項目と機能拡張)のところを見ましても、siriに関する事柄は見つけられませんでした.

返信

2025/02/24 07:45 Piyomaru への返信

以下が実行結果です.新規作成した直後にコードを貼り付け、実行しました.エラーも起こっていません.

{class:Finder window, id:7683, name:"Mac mini M4 Pro", position:{1280, 25}, bounds:{1280, 25, 2560, 693}, index:1, zoomed:false, closeable:true, titled:true, floating:false, modal:false, resizable:true, zoomable:true, visible:true, collapsed:false, target:computer container of application "Finder", current view:list view, icon view options:icon view options of Finder window id 7683 of application "Finder", list view options:list view options of Finder window id 7683 of application "Finder", column view options:column view options of Finder window id 7683 of application "Finder", toolbar visible:true, statusbar visible:true, pathbar visible:true, sidebar width:143}

のディスクにもかなり具体的な用途を記した名前を付けているので、それをここで晒すのもどうかと思い、当たり障りのない場所を選びました.他の場所が良いようでしたら再度掲載します.


返信

2025/02/24 08:10 light289 への返信

>冒頭のコードはアプリケーション形式のAppleScriptに組み込んだ一文です.

今朝、昨日はエラーで動かなかったコードが動くようになっていました.コード自体は変更していません.ただし再コンパイルは実行しています.ここでの書き込みのために行った既存の設定の確認中にそれらをオン・オフした結果かなと思っているのですが、それでも、どこの設定がどう功を成したのかはやはりわからずじまいです.これでは同じことがまた起こる気がします.

そして少し気になったこともあります.先ほど「動くようになった」と書きましたが、数回ほどは連続してFinderが「反応なし」状態になりました.1分ほど経過するとそれもなくなり、正しく続行および終了します.それ以降は「反応なし」になることもなく動いています.キャッシュの関係なのでしょうか? それにしても1分も反応がなくなるくらい重たい処理と思えませんし、その最中、Finderの中、あるいはアプリケーション形式のAppleScriptの中で何が起こっているのかという点はとても気になります.

返信

2025/02/24 09:53 light289 への返信

>冒頭のコードはアプリケーション形式のAppleScriptに組み込んだ


アプリケーション形式のAppleScriptとひとことにいっても、


(a)Xcode上で作るAppleScript Cocoa Application(Mac App Store提出用形式)

(b)Script Editor上で作るApplet

(c)Script Editor上でCocoa-AppleScript Appletテンプレートから作るCocoa-AppleScript Applet

(d)Script Debuggerから書き出したEnhanced AppleScript Applet


の4つがあるわけですが、(b)で間違いないのでしょうか?


また、「組み込む」というのは、AppleScript Bundle形式書類にライブラリとして分離したscriptとして組み込む形式のことでしょうか? あるいはただ単にコピー&ペーストとして内容を貼り付けただけのものを指しているのでしょうか?


返信

2025/02/24 16:21 Piyomaru への返信

状況がいくつか見えてきたのですが、やはりその前に、ちゃんと答えておきます..

>冒頭のコードはアプリケーション形式のAppleScriptに組み込んだ

>>(b)Script Editor上で作るApplet

答えとしては(b)なので、そのとおりです.Cocoaの機能は利用しています.今回の件が解決するまで封印していますが.

あと、ただ単にコピー&ペーストとして内容を貼り付けただけのものを指しています.「一文として」とは書きましたが、正しく伝わっていなかったようで..

返信

2025/02/24 17:08 light289 への返信

先ほど同じコードを実行したところ、また同じエラーが発生しました.昨日はできたのにどうして!?と思い画面を見てみると、最近は「表示オプション(command+J)」と「インスペクタ(command+option+I)」を常に表示していることに気付きました.これらのウインドウを閉じるとエラーは発生しなくなりました.

そしてよくよく考えると window 1 to {100, 40, 300, 200} ということは最前面のウインドウに対する命令となり、それらのウインドウのサイズを変更できない(または、できなかった)から発生したエラーなのかなと理解しました.もしかすると違うかもしれませんが.

ええと、「表示オプション」や「インスペクタ」はフローティングウインドウと言ったでしょうか.うろ覚えですいません.感覚的にはファイルやフォルダなどが表示されているウインドウ自体が最前面という認識でしたが、違うのでしょうか.「表示オプション」や「インスペクタ」などフローティングウインドウが表示させている場合、Finder的には「最前面のウインドウはフローティングウインドウを意味する」のでしょうか.そうだとしたらサイズなどを変更できないフローティングウインドウに対する命令でエラーが起こるのは当然の挙動なのかと.

そして挙動の話ですが、表示オブションの表示内容が少し「おかしい」ようです.通常タイトル部分にはアクティブになっているフォルダ名が表示されるはずですが、同じウインドウ内の違うフォルダをアクティブにしてもそのタイトル部分の文字列が変わらないのです.ただし並び替えの指定などをしてやると、ちゃんとそのとおりに並べ替えなどは行われます.プレビューの表示のボタンなどもクリックすると反映されます.タイトル部分の表示だけがおかしいのです.ですがインスペクタの方はアクティブにしたFinderウインドウを正しく追従しているのか、タイトル部分の文字列(フォルダ名またはファイル名)は正しく反映されます.表示オプションのタイトル部分の表示が以前からそうだったのかと訊かれると「そうだったかも」としか答えられません.そこまでちゃんと見ていなかったというのもありますが.ここでは割愛しますがFinderに関しては特にSequoiaになってからおかしな挙動をすることが多くあるためまったく信用できません..

返信

2025/02/24 17:43 light289 への返信

tell application "Finder"

make new Finder window

set bounds of Finder window 1 to {100, 40, 300, 200}

end tell


AppleScriptをスクリプトエディタで記述し、バンドル形式書類として保存

識別用にバンドルIDを設定

スクリプトエディタの「ファイル」メニューから「書き出す...」を実行

書き出しダイアログで、ファイルフォーマットに「アプリケーション」を指定、オプションで「実行専用」を指定。コード署名で「サインインしてローカル実行」を指定して「保存」


これで、とくに「システム設定」であれこれいじくらずにFinder Windowのリサイズが行えました。

返信

2025/02/24 18:19 Piyomaru への返信

何度も、そしていくつも書き込みいただいて恐縮です.そして、今回書いていただいたコードでなく、さっきまで動かなかった(=エラーが出る)コードで正しくウインドウのリサイズと移動(=bounds)ができました.もう、わけがわかりません.違ったことと言えばアプリケーションOnyxでFinderを終了を有効にし、その後Finderを終了させ、再度起動したことです.これが功を成したのかはまだちゃんとはわかりません.以前の機種ではずっとこの「Finderを終了」を有効にして運用してきましたが、もう特に必要ないかなと思い有効化していませんでした.余計なことをせず、有効化しておけばよかったと後悔します.

そして気になっていたフローティングウインドウに関しても、今回は表示したままでしたがエラーは発生せず、問題なく実行できました.ここでの挙動で気になったのは、インスペクタと表示オプションの両方を表示させている時に「表示オプションウインドウ」にフォーカスを当てて(ウインドウを選択して)いても、インスペクタを最前面と認識していたことです(表示位置なども関係しているのでしょうか?).その証拠に「インスペクタウインドウ」が移動しました.リサイズに関しては横幅を300にはできなかったようで、可能な範囲の最大幅での設定となりました.高さも同様です.なのでリサイズ自体は成功したといって良いと思います.そしてこれは「表示オプションウインドウ」でなく通常のFinderウインドウにフォーカスを当てていても「インスペクタウインドウ」を最前面と認識して処理したようです.通常のFinderウインドウ自体に変化はありませんでした.このことからやはり、フローティングウインドウを表示させている時はそれらを最前面と認識するようです.タネがわかれば対処はできるので、これは収穫でした.


そしてあらためて.

新しいコードは問題なく実行できました.ただしそれは、以前から実行できていたのか、それとも実行できるようになったのかはわかりません.同様にまたエラーが出てしまうことがあるのかもしれません.なので観察は続けます.単に「window」でなく「Finder window」としたことでフローティングウインドウに対する処理とならなかったのかどうか、今後検証してみます..


解決に至ったのかどうかまだよくわからないので、しばらく検証したあと、また書き込みます.

返信

2025/02/24 10:12 light289 への返信

多分スクリプトエディターの書き出すでアプリケーションとしている状態だと思います。

書き出した後にシステム設定のプライバシーとセキュリティ ->アクセシビリティを表示し左下の+を押してそのアプリを追加してみてください。

こんな感じです。

返信

2025/02/23 18:37 light289 への返信

セーフブートを実行後に、トラブルが解消されるようでしたら、拡張機能が原因となっっている可能性が高いです。

システム設定>Apple Intelligence & Siriの拡張機能を調べる必要があるかもしれません。

返信

2025/02/23 23:18 light289 への返信

おおむね、設定に問題があるようには見えませんし、自分の手元にある複数のmacOS 15環境で、上記のScriptは問題なく実行できています。


試しに、お使いの環境のScript Editor上で、


tell application "Finder"

properties of window 1

end tell


は実行できますか? また、どのような結果が返ってきますか?


返信

AppleScriptでFinderウインドウのサイズなどを変える、ができなくなっている.

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。