Я пытаюсь создать службу, которая делает следующее:
Копаясь и черпая вдохновение из таких сообщений, как « Копирование пути к текущему каталогу в буфер обмена» и «Копировать путь к файлу или папке MacYourself в буфер обмена в Mac OS X Lion», я дошел до того, что могу получить пути к выбору, но Кажется, я застрял, пытаясь получить путь к текущему окну, если выбор пуст.
ОБНОВЛЕНИЕ 13 декабря 2013 г. У меня есть несколько полезных отзывов (см. https://apple.stackexchange.com/a/113612/7488 ; спасибо @Flavin), поэтому я обновил код до приведенного ниже:
on run {input, parameters}
set l to {}
tell application "Finder"
set sel to (get selection)
if not sel = {} then -- there are some file/folders selected
repeat with f in (get selection)
set end of l to POSIX path of (f as alias)
end repeat
else --no stuff is selected, get the current location path
set end of l to POSIX path of (insertion location as alias)
end if
end tell
set text item delimiters to linefeed
set the clipboard to (l as text)
end run
Логика кажется твердой, и она работает, пока у меня есть «что-то», выбранное в Finder.
Я подозреваю, что служба может быть не «активной», когда ничего не выбрано (то есть, когда желаемым результатом будет копирование текущего пути в буфер обмена).
В этой ситуации окно Finder выглядит следующим образом:
Но при попытке активировать службу отображается «пустой» список служб:
Когда я что-то выбрал, список служб заполняется:
«Копировать путь к файлу», который я определил, связан с «Файлами и папками» в настройках служб — в чем может быть проблема?
Я думаю =
, это то, что вы ищете.
set sel to (get selection)
if not sel = {} then
--stuff is selected
else
--no stuff is selected
end if
Или снимите not
и переверните чехлы
set sel to (get selection)
if sel = {} then
--no stuff is selected
else
--stuff is selected
end if
Теперь это работает. Ключ в том, как определяется служба «Автоматизатор».
При первоначальной настройке служба Automator была определена как «Файлы или папки» в «Finder»:
Итак, в настройках служба связана с файлами и папками:
И в результате сервис не "активен" при отсутствии выбора (получаем то же изображение, что и в вопросе):
Изменение определения услуги на «Без ввода»:
Означает, что Сервис доступен , когда в Finder нет выбора:
Проверка в настройках служб, теперь служба связана с категорией «Общие»:
И поведение ожидаемое.
Жарава