Вам нужно изменить его на следующее:
tell application "OmniGraffle Professional 5"
set _document to front document
set _path to path of _document
-- Get filename without extension
tell application "Finder"
set {_filename, _extension, _ishidden} to the ¬
{displayed name, name extension, extension hidden} ¬
of ((the _path as POSIX file) as alias)
end tell
if (_extension ≠ missing value) then
set baseName to text 1 thru -((length of _extension) + 2) of _filename
end if
end tell
«путь к переднему документу» возвращает POSIX-путь к файлу, который является простой строкой. Чтобы иметь возможность получить информацию об элементе, Finder будет хотеть ссылаться на псевдоним файла, о котором идет речь. Когда вы передаете простую строку, она получает ошибку, потому что простая строка не имеет этих свойств. Чтобы получить псевдоним, необходимо сначала ввести простой путь к файлу POSIX, а затем принудительно привести файл POSIX к псевдониму.
Если вы не определили эти переменные где-либо еще, вам необходимо удалить подчеркивания в {displayed_name
, name_extension
, extension_hidden
}. Когда вы смотрите на «скомпилированный» код с оставленными подчеркиваниями, он выглядит следующим образом:
Итак, AppleScript интерпретирует displayed_name
как переменную, а не свойство. Теперь хорошо, если вы определили эти переменные в другом месте, например в верхней части вашего скрипта в свойствах. Но если нет, вам нужно удалить подчеркивания, так как имена свойств элементов Finder не имеют подчеркивания. При удалении подчеркиваний окраска выглядит правильно (свойства имеют фиолетовый цвет, а переменные - зеленый).
Обратите внимание, что это все равно не даст вам имя файла без расширения. Чтобы получить это, вам нужно сделать что-то похожее на то, что я сделал в добавленной строке, используя text n thru m
if (_extension ≠ missing value) then
set baseName to text 1 thru -((length of _extension) + 2) of _filename
end if