1

AppleScript次のことを行うプログラムを書きたいと思います(Automatorこれも問題ありません)。

現在アクティブなTextMateファイル (複数のタブが開いていて、他のウィンドウが開いている可能性があります) をアプリケーションで開きたいですTransmit 2。(これにより、Transmit の DockSend 機能を使用して FTP 経由でファイルがアップロードされます。)

ここでは特定のアプリケーション ( TextMate) を使用しましたが、理想的には、任意のアプリケーションで現在アクティブな任意のファイルに対して機能するようにしたいと考えています。

最終的には、キーボード ショートカットを割り当てて実行します。

これが私がこれまでに持っているものです:

tell application (path to frontmost application as text)
    set p to path of document 1
end tell

tell application "Finder"
     open POSIX file p using "Transmit 2"
end tell

これの多くのバリエーションを試しましたが、何も機能しません。

編集: 私はこのページを見つけました: http://wiki.macromates.com/Main/Howtosそして誰かが私が探しているスクリプトを正確に作成しました:

tell application "Transmit" to open POSIX file "$TM_FILEPATH"

TextMateこれは Transmit [not 2] 用で、 v2 より前のバージョンだと思います。エラーが表示されます (Transmit 2 を使用している場合):

Transmit 2 got an error: AppleEvent handler failed.

v2 への更新の 1 つが壊れています (どれかはわかりません)。

4

2 に答える 2

1

あなたの問題には2つのステップがあるようです。1 つはドキュメントへのパス (または後でドキュメントを開くことができる他の参照) を取得し、2 つは目的のアプリケーションでドキュメントを開きます。

AppleScript がアプリケーションとして保存されている場合、最前面のアプリケーションは実行中の AppleScript であるため、そのパスが AppleScript アプリケーションへのパスになります。その場合、2 番目に前にあるアプリケーションを取得する方法がわかりません。

ただし、アプリケーションがスクリプト フォルダーをサポートしている場合 (AppleScript エディターの環境設定に移動し、[メニュー バーにスクリプト メニューを表示] を有効にします)、スクリプトをユーザー スクリプト フォルダーに「スクリプト」として保存し、スクリプトから実行することができます。メニューの最前面のアプリケーションは、現在使用中のアプリケーションになります。

AppleScript へのパスではなく、正しいパスを取得していることを確認するために、テスト時に p 変数を表示することができます。

ドキュメントを別のアプリケーション (Transmit など) で開く場合、アプリケーションがサポートしている場合は、そのアプリケーションと直接対話するのが最善の方法です。

tell application (path to frontmost application as text)
    set p to path of document 1
end tell

--for testing: verify that the path is for the correct document
display dialog p

tell application "Transmit 2"
    open p
end tell

私は Transmit を持っていませんが、「Transmit 2」を Textastic または Smultron 6 に置き換えると、これが機能することを確認しました。

ドキュメントを開くために Finder を使用する必要がある場合、Finder はそのパスを文字列として優先するようであり、アプリケーションへのフル パスも優先するようです。このようなものが動作するはずです:

tell application (path to frontmost application as text)
    set p to path of document 1
end tell

--for testing: verify that the path is for the correct document
--display dialog p

set transmitPath to path to application "Transmit 2"
set p to POSIX file p as string

tell application "Finder"
    open file p using transmitPath
end tell

ここでも、アプリケーションとして Textastic と Smultron を使用してこれをテストしました。

于 2014-08-21T06:13:40.383 に答える