エディターを開かずにapplescriptを実行する


12

Applescriptを実行するたびに、エディターがポップアップします。

直接実行する方法はありますか?

回答:


19

スクリプトの保存方法は、Mac OS Xでの動作に大きな影響を与えます。スクリプトがスクリプトとして保存されるだけで、スクリプトを開くたびにスクリプトエディターが開くように思われます。

この問題を解決するには、AppleScriptエディターでスクリプトを開き、アプリケーションとして保存します。それはトリックになるはずです。

手順は(エディター内)

ファイル>名前を付けて保存>ファイル形式をアプリケーションに設定して保存します。

リンクテキスト


プロンプトが表示されます:「実行を押して実行するか、終了して終了します」...しかし、それはスクリプトの誤りだと思います!ありがとう
OscarRyz 2009

1
実行チェックボックスをオンにすると、プロンプトが表示されなくなる場合があります。
ブルースマクロード

私の理解では、「実行のみ」チェックボックスでは、後でスクリプトを編集することはできません。
jtbandes 2009

@jtbandes ahhhh ...それは理にかなっている
Bruce McLeod

2
ヨセミテでは、現在の方法はファイル->エクスポートを使用することに注意してください。AppleScriptエディターの最新バージョンでは、[名前を付けて保存]ダイアログはもうありません。
anon58192932

7

スクリプトを保存するときに、[ファイル形式]ドロップダウンから[アプリケーション]を選択できます。その後、スクリプトを実行し、スクリプトエディターにドラッグしてスクリプトを開くことができます。または、[実行のみ]を選択して、編集可能なバージョンを保存しないようにすることもできます。

別の方法としては、使用することができますosascriptどちらかとして、ターミナルでコマンドをosascript /path/to/scriptosascript -e "a short script here"


1

スクリプトを〜/ Library / Scripts / Finder /フォルダーに配置して、[スクリプト]メニューから直接実行することもできます。


1

macOS High Sierra 10.13では、ファイル/名前を付けて保存はありません。

ファイル/エクスポート/ファイル形式を使用する必要があります:アプリケーション ファイルのエクスポート ファイルフォーマット


0

別の方法は、osascriptコマンドを使用してFinderで.scptを実行するサービスをAutomatorで作成することです。

(私はAutomatorを英語で使用していないため、表現が正確でない場合があります)

  1. Automatorを起動
  2. ファイル>新規、サービスを選択
  3. 「Service Accepts:」で「File or Folder」を選択します
  4. 「場所:」で「Finder.app」を選択します
  5. 「AppleScriptを実行」を検索し、アイテムを右側にドラッグします
  6. [AppleScriptの実行]ボックスに、次のコードを入力します。

    on run {input, parameters}
        tell application "Finder"
            --get the selected file
            set selectedItem to (item 1 of (get selection))
    
            --get location info (folder:file format)
            set fileLocation to (selectedItem as alias) as string
    
            --replace : with / with subroutine
            set the semifinal to my replace_chars(fileLocation, ":", "/")
    
            --remove Macintosh HD with subroutine
            set the theFinal to my replace_chars(semifinal, "Macintosh HD", "")
        end tell
        do shell script "osascript " & "\"" & theFinal & "\""
        return input
    end run
    
    on replace_chars(this_text, search_string, replacement_string)
        set AppleScript's text item delimiters to the search_string
        set the item_list to every text item of this_text
        set AppleScript's text item delimiters to the replacement_string
        set this_text to the item_list as string
        set AppleScript's text item delimiters to ""
        return this_text
    end replace_chars
    
  7. ファイル>保存して、「AppleScriptを実行」のような名前を付けます

  8. これで、Finderで.scptファイルを右クリックして[AppleScriptを実行]を選択し、実行されたスクリプトを確認できます。

リファレンス:サブルーチンのソース-AppleScript:Essential Sub-Routines


AppleScriptコードに問題があるようです。1. .scptファイルが渡される前に選択内容を検証するためのエラー処理またはコードosascriptがなく、Finderで複数の.scptファイルが選択された場合に処理するようにコード化していません。2.次の1行のコードが、「AppleScriptを実行」アクションに追加したすべてのものを置き換える場合は、そのようなコーディングのきまりを経験する必要はまったくありません。do shell script "osascript " & quoted form of POSIX path of item 1 of input現在のAppleScriptコードのすべてを置き換える最小限の例を次に示します。paste.ee
p

最小限の例では、選択したファイルが.scptファイルではないというメッセージを表示ifするelse句を使用して、ステートメントブロックを拡張できます。そうすれば、ユーザーは、サービスの実行時に誤って間違ったタイプのファイルを選択したことを確認しなかったのになぜ何も起こらなかったのではないかと思ってしまうことはありません。
user3439894 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.