Выполнить яблочный скрипт без открытия редактора

12

Каждый раз, когда я хочу запустить appleScript, появляется редактор.

Есть ли способ запустить его напрямую?

OscarRyz
источник

Ответы:

19

Способ сохранения сценария оказывает большое влияние на его работу в Mac OS X. Похоже, ваш сценарий просто сохраняется как сценарий, и именно поэтому редактор сценариев открывается при каждом его открытии.

Чтобы решить проблему, откройте скрипт в редакторе AppleScript и сохраните его как приложение. Это должно к хитрости.

Шаги есть (в редакторе)

Файл> Сохранить как>, затем выберите Формат файла для приложения, затем сохраните.

текст ссылки

Брюс Маклеод
источник
Теперь он запрашивает: «Нажмите run, чтобы запустить или выйти, чтобы выйти» ... но я думаю, что это ошибка скрипта! Спасибо
OscarRyz
1
Установка флажка «Выполнить» может помешать появлению приглашения.
Брюс Маклеод
Насколько я понимаю, флажок Run Only не позволяет редактировать скрипт позже.
jtbandes
@jtbandes аааа ... это имеет смысл
Брюс Маклеод
2
Обратите внимание, что в Yosemite текущим методом является использование File -> Export. В последней версии редактора AppleScript больше нет диалога «Сохранить как».
anon58192932
7

При сохранении скрипта вы можете выбрать «Приложение» из выпадающего меню «Формат файла»; тогда вы сможете запустить его, и вы все равно сможете перетащить его в редактор скриптов, чтобы открыть скрипт; или вы можете выбрать Run Only, чтобы не сохранять редактируемую версию.

Кроме того, вы можете использовать osascriptкоманду в терминале, либо как, osascript /path/to/scriptлибо osascript -e "a short script here".

jtbandes
источник
1

Вы также можете поместить скрипт в папку ~ / Library / Scripts / Finder / и запустить его прямо из меню Script.


источник
1

Под macOS High Sierra 10.13 нет Файла / Сохранить как.

Вы должны использовать Файл / Экспорт / Формат файла: Приложение Экспорт файла Формат файла

Джей Уокер
источник
0

Другой способ - создать Сервис в Automator, который использует osascriptкоманду для запуска .scpt в Finder.

(Я не использую Automator на английском языке, поэтому формулировка может быть неточной)

  1. Запустить Automator
  2. Файл> Новый и выберите Сервис
  3. В «Служба принимает:» выберите «Файл или папка»
  4. В «Location:» выберите «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. Теперь вы можете щелкнуть правой кнопкой мыши файл .scpt в Finder, выбрать «Запустить AppleScript» и увидеть, как ваш скрипт выполняется.

Ссылка: Источник подпрограммы - AppleScript: Основные подпрограммы

Джек Ву
источник
Я вижу проблемы с вашим кодом AppleScript. 1. У вас нет обработчика ошибок или кода для проверки того, что выбранный файл является .scpt до его передачи, osascriptи вы не закодировали его для обработки, если в Finder выбрано более одного файла .scpt. 2. Совершенно не нужно проходить через такое сложное кодирование, когда следующая единственная строка кода заменяет все, что вы добавили в действие «Выполнить AppleScript». do shell script "osascript " & quoted form of POSIX path of item 1 of inputВот минимальный пример для замены всего в вашем текущем коде AppleScript: paste.ee/p/XngKA
user3439894
В минимальном примере ifблок оператора может быть расширен с помощью elseпредложения, которое отображает сообщение о том, что выбранный файл не является файлом .scpt. Таким образом, пользователи не задаются вопросом, почему ничего не произошло, если они не увидели, что они случайно выбрали неправильный тип файла при запуске службы.
user3439894