1

おはようございます、

デスクトップ上のすべてのファイルをEvernoteに送信し、ファイルを削除する、実行可能なAppleScriptを作成しようとしています。これまでの私のコードは次のとおりです。

on run {input}

tell application "Finder"
    select every file of desktop
end tell

tell application "Evernote"
    repeat with SelectedFile in input
        try
            create note from file SelectedFile notebook "Auto Import"
        end try

    end repeat

end tell

tell application "Finder"
    delete every file of desktop
end tell

end run

これを実行すると、最初と最後の「tell」は正常に機能します(つまり、スクリプトが強調表示されてからデスクトップ上のすべてのファイルが削除されます)が、真ん中の「tell」は何もしません。

ただし、デスクトップ上のすべてのファイルを手動で強調表示してから、真ん中の「tell」を実行すると、正常にインポートされます。つまり、各アイテムは意図したとおりに個別のメモにインポートされます。

お分かりのように、私はAppleScriptを初めて使用します。選択したファイルをある種の配列に入れる必要があると思いますが、それを理解することはできません。ヘルプ!

どうもありがとう

リッチ

4

2 に答える 2

3

変数とFinderによるファイルの選択との間に関係がないため、コードは失敗しinputます。つまり、リストは空であり、Evernoteは何も処理していません。tryエラー処理なしでEvernoteimportコマンドをブロックにラップすることで問題を難読化しました。つまり、すべてのエラーが見過ごされてしまいます(この種の問題を回避するには、エラーメッセージをon error句に記録することをお勧めします。そうしないと)。

また、実際にファイルを処理するためにAppleScriptを介してデスクトップ上のファイルを選択する必要はありません。次のコードは、表示されているすべてのファイル(パッケージ/アプリなどの疑似ファイルを除く)を取得します。

tell application "System Events"
    set desktopFiles to every disk item of (desktop folder of user domain) whose visible is true and class is file
end tell

その方法で取得したリストをEvernoteに渡して処理します。

repeat with aFile in desktopFiles as list
    try
        tell application "Evernote" to create note from file (aFile as alias) notebook "Auto Import"
        tell application "System Events" to delete aFile
    on error errorMessage
        log errorMessage
    end try
end repeat

そして、あなたは行ってもいいです。

削除コマンドを慎重に配置することで(インポートコマンドの直後、tryブロック内、すべてのファイルのループ内)、ファイルを反復処理する必要がなく、インポート時にEvernoteがエラーにならない場合にのみ呼び出されるようになります。数回。

最後の注意:tell実行するコマンドが1つしかない場合は、ステートメントにブロック構文を使用する必要はありません。使用するtell <target> to <command>方が簡単で、ネストされたコンテキストの地獄から抜け出すことができます。

リストの処理とエイリアスの強制を修正してくれた@adayzoneに感謝します

于 2012-04-27T23:37:54.230 に答える
1

試す

tell application "System Events" to set xxx to get every file of (desktop folder of user domain) whose visible is true

repeat with i from 1 to count of xxx
    set SelectedFile to item i of xxx as alias
    try
        tell application "Evernote" to create note from file SelectedFile notebook "Auto Import"
        tell application "Finder" to delete SelectedFile
    end try
end repeat

ありがとう@fanaugen

于 2012-04-27T11:35:24.350 に答える