1

私の特定のフォルダが開かれたときにapplescriptを実行したい。次に、入力に応じて、フォルダーを閉じるか、開いたままにします。フォルダを開かずにすべて。だから基本的に:

1) フォルダを開いてみる

2) フォルダが開かないが、ウィンドウがポップアップする

3-A) ユーザーが [OK] をクリックすると、フォルダが開きます

3-B) ユーザーが [キャンセル] をクリックすると、スクリプトが終了し、フォルダーは開かれません。

これどうやってするの?覚えておいてください: フォルダーはバックグラウンドで開くことができません。ユーザーが [OK] を押した場合にのみ開くことができます。ヘルプ?

4

2 に答える 2

1

このタスクでは、スクリプト ファイルをトリガーするフォルダー アクションを使用します。以下は、スクリプトをトリガーする可能性のあるフォルダーに関連するイベントと、対応する特別なハンドラーです。

  • フォルダが開かれている —on opening folder window for this_folder
  • フォルダが閉じられています —on closing folder window for this_folder
  • 1 つまたは複数のアイテムがフォルダーに追加されたon adding folder items to this_folder after receiving these_items
  • 1 つまたは複数のアイテムがフォルダーから削除された —on removing folder items from this_folder after losing these_itmes
  • フォルダ ウィンドウを移動した場合 —on moving folder window for this_folder

この場合、最初の箇条書きに焦点を当てます。箇条書きが示すように、スクリプトは、フォルダーが実際に開かれたときにのみトリガーされます。ただし、スクリプトの最初に次の行を追加するだけで、この問題を回避できます。

tell application "Finder" to close first window whose target is this_folder

そして、ここに完全なスクリプトがあります:

on opening folder window for this_folder
    tell application "Finder"
        close first window whose target is this_folder
        -- the window may appear briefly, but at least you've accomplished your goal

        display dialog "Open folder " quoted form of the name of this_folder & "?" buttons{"Yes,"No"} default button 1 cancel button 2
        -- pressing the "No" button is exactly the same as pressing the "Cancel" button on a regular dialog, and the script terminates

        make new Finder window with properties {target:this_folder}
    end tell
end opening folder window

ローカルのスクリプト フォルダーのフォルダー アクション フォルダーにスクリプト ファイルを保存します。フォルダーがまだ存在しない場合は、自分で作成します。そうすることで、スクリプトを実行することさえできます。これが適切に機能するためには、アプリケーション/アプリケーション バンドルではなく、保存したスクリプト ファイルを目的のフォルダに添付する必要があります。これをする...

  1. 目的のフォルダを右クリックします
  2. 下部にあるメニュー項目「Folder Actions Setup」をクリックします
  3. 表示されるダイアログで保存したスクリプトを見つけます
  4. 「添付」をクリック
  5. [フォルダ アクションの設定] ウィンドウを閉じます。

これが完了したら、スクリプトを実行する準備が整いました。

補遺:フォルダーに機密情報が含まれている場合は、ユーザー 57368 が述べているように、「AppleScript を使用してシステムをリモートで保護することはおそらく不可能である」ことに注意してください。

于 2012-06-23T03:53:26.520 に答える
0

通常のフォルダの代わりに、フォルダまたはディスク イメージを含むアプリケーション バンドルが必要です。暗号化されたディスク イメージを使用する場合、ユーザーが好みの手順に従わずにコンテンツにアクセスすることはより困難になりますが、AppleScript を使用している場合、システムをリモートで安全にすることさえできない可能性があることに注意してください。

ユーザーにデータの読み取りを許可する前に、使用許諾契約またはその他の静的な通知を提示したい場合は、hdiutilマウント時に使用許諾契約を提示するディスク イメージの作成方法に関するマニュアル ページを参照してください。

于 2012-06-23T01:57:16.890 に答える