Applescriptはショートカットコマンドを呼び出さない


0

Alfredのおかげで、キーストロークを介して頻繁に開く長いTextEditドキュメントがあります。多くの非標準のスペルが含まれているため、「入力中のスペルチェック」の選択を解除します(ただし、他のTextEditドキュメントではスペルチェックをデフォルトでオンにする必要があります)。そのコマンドを切り替えるためのショートカット「コマンド/オプション/コントロール-S」(設定/キーボード/ショートカット内)を作成したことに注意してください。

ステップを節約するために、アップルスクリプトを作成してドキュメントを開き、そのコマンドをトリガーします。しかし、私はそれを機能させることができません。

ドキュメントは開きますが、「入力中にスペルチェック」はオフになりません。

tell application "Finder"
activate
open document file "reference.rtf" of folder "Documents" of folder "MYSTUFF" of folder "Users" of startup disk
end tell

tell application "TextEdit" to activate
tell application "System Events"
keystroke "s" using {command down, option down, control down}
end tell

===============

編集:

「遅延」を挿入しましたが、それは役に立ちません。スペルが強調表示されます。

AppleScriptsが何らかの理由でアプリケーション内のカスタムショートカットを呼び出すことができない可能性はありますか?

「入力中にスペルチェック」コマンドを呼び出す別の方法はありますか?TextEditのスクリプト可能なコマンドの1つではないようです。


結果はどうですか?ビープ音が鳴るか、エラーが発生しますか?推測するだけですが、キーストロークが実行されたときにTextEditがまだアクティブになっていない可能性はありますか?delay 1activate 行とkeystroke行の間に行を挿入してみてください。(1秒の遅延を引き起こし、必要に応じて数値を増減します)
アーサー

その結果、ドキュメントが開きます...そしてすべてのスペルミスが強調表示されます。遅延5でも助けにはなりません。
ジンボ

編集内容:カスタムショートカットでも機能するはずです。実際、テストするために、あなたが言及した正確なショートカットを設定し、十分な遅延を使用して問題なく動作します。または、名前でメニュー項目を選択してみてください。グーグルでそれを行う方法のポインターを見つける必要があります(申し訳ありませんが、私は現在私のコンピューターにいません)。
アーサー

おそらく、AppleScriptは「テキスト編集」ではなく「システムイベント」にそのショートカットを送信するため、カスタムショートカットを受け入れません。いずれにしても、はい、メニュー項目の選択は機能します。投稿に返信して、受賞したスクリプトを示します。
ジンボ

回答:


1

スクリプトがシステムイベントに送信しているのに対して、ショートカットはTextEditでのみ使用されるため、カスタムショートカットを受け入れていなかったと思われます。

それが本当かどうかに関係なく、次のスクリプトは機能します。ショートカット経由で起動するのではなく、メニュー項目を選択します。

tell application "Finder"
activate
open document file "reference.rtf" of folder "Documents" of folder "MYSTUFF" of folder "Users" of startup disk
end tell
delay 1
activate application "TextEdit"
delay 1
tell application "System Events"
tell process "TextEdit"


click menu item "Check Spelling While Typing" of menu 1 of menu item "Spelling and Grammar" of menu 1 of menu bar item "Edit" of menu bar 1

end tell
end tell

そして、ため息、ドキュメントを数分間開いた後、私はそれに戻ってきた....つづりの間違いは結局強調表示される。ハイライトが表示されるまでに予測できない時間がかかります。これは、返信の混乱の原因にもなります。
ジンボ

私はまだトグルの初期状態の予測不能性だと思います。Applescriptができるとは思わない-'cos if(toggle is off) {switch on}それが修正されます。
鉄人

または多分それは... stackoverflow.com/questions/16504541 / ... コーヒーをもう一杯飲んだ後、これについて考えます;)
鉄人

0

コメントの後に追加された注記...
問題の原因は遅延ではない可能性があります。自動チェックスイッチの初期状態を判断するのが難しい可能性が高いようです。


アーサーが述べたように、「遅延」はあなたの実際の問題だと思いますが、そのスクリプトを3行に磨き、遅延を追加することも
できますSSDではなくHDから実行している場合、遅延値を上げる必要があります2または3で、ドキュメントを開いて前面に表示する時間を確保します。

tell application "Finder" to open file ((path to documents folder as text) & "reference.rtf")
delay 1
tell application "System Events" to keystroke "s" using {command down, option down, control down}

users / mystuff / Documentsパスは、アカウント名が変更された通常の〜/ Documentsフォルダーであると想定しています。私の新しいバージョンは、スクリプトにあるユーザー名に依存せず、現在のユーザーの〜/ Documentsフォルダーを使用するだけです。


上記の私のコメントによると、遅延は役に立たない(そしてSSDである)。ドキュメントが開きますが、スペルミスが強調表示されます。
ジンボ

それが私にとってうまくいかなかった場合、私はそれを投稿しなかったでしょう;-)私の推測は、それから、あなたのデフォルトはあなたが達成しようとしている結果と反対です。あるドキュメントに対してスペルチェックをオンにし、別のドキュメントに対してスペルチェックをオフにすることは完全に可能です。変更するキーコマンドを使用せずに開いたときの表示を確認してください。また、メニューコマンドがアクティブになっていることを実際に確認できることを確認します。[編集]メニューが短く青く点滅するはずです。
鉄人

TextEditはQuitでスペルチェックの状態を保持し、次の起動後、次のQuitで再設定されるまで、開いているすべてのドキュメントはその設定で始まります。Applescriptで、状態を確認してオンになっている場合にのみ切り替える方法はありません。
鉄人

さらなる調査-そのスイッチの状態は、ドキュメント自体の中、または少なくともアプリのsaved.stateファイルに保存される可能性があるようです。これは、「最後に設定」スイッチであり、終了時に閉じられた最後のドキュメントが設定されたものとして記憶されます。
鉄人

最後のあえぎの試みは- -これは、すべてのトグルスイッチを示しsuperuser.com/questions/367533/...を -しかし、ターミナルでのリード/ライトデフォルトとして設定されている場合、それらのどれもが、テキストエディットのために働くん、私がテストしました。ターミナルで現在の状態を確認するには、私よりも賢い人が必要です
鉄人

0

ここにたどり着くための研究は、フローを維持する価値があると思うので、これを2番目の回答として追加します。

多くのGoogle-FuとApple独自のUIヘルパー、UIElementInspectorを使用して、FDMlib(ダウンロードのためにAppleに直接リンクします)を介して取得しました。

tell application "Finder" to open file ((path to documents folder as text) & "reference.rtf")
delay 1

tell application "System Events" to tell process "TextEdit"
    set v to (value of attribute "AXMenuItemMarkChar" of menu item "Check Spelling While Typing" of menu 1 of menu item "Spelling and Grammar" of menu 1 of menu bar item "Edit" of menu bar 1)

    if v = "✓" then
        click menu item "Check Spelling While Typing" of menu 1 of menu item "Spelling and Grammar" of menu 1 of menu bar item "Edit" of menu bar 1
    end if
end tell

「set v to ...」は、そのメニュー項目の現在のトグル状態を調べる部分です。少しラフで準備ができていますが、メニュー項目自体の実際のチェックマークをチェックすることで機能します。チェックされていない場合は何も行いません。チェックされている場合は、スイッチを切るために引き渡します。

適切なスクリプト作成者がこれを十数通りに改良できると確信していますが、動作します:-)


初めて実行したときに機能しているように見えました。2回目、3回目、および4回目のスペルミスが再び強調表示されました。テストの場合、強調表示が表示されるまで30秒間待機する必要があります。予測できないようです。
ジンボ

ファイルの大きさは?私は再びより多くの遅延が必要かもしれないと考えに戻りました-私は、スイッチがどの状態にあったとしても、それを正しい方法のままにするまで、これをテストしました。
鉄人

大きなファイルです。
ジンボ

「delay 10」に変更しました。最初の起動は機能しました。後続のものはスペルミスを示しました。
ジンボ

それから私はあきらめます。これは、テストファイルを開く前のトグルの状態が何であれ、ここで繰り返し、予想どおりに機能します。あなたはそれをテストしています、それが具体的にトグルしていない、間違った方法でトグルしている、ランダムに動作している、小さいファイルで動作するかどうか...私にできることはこれ以上ありません。
鉄人
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.