Приведенный ниже код AppleScript (который возвращает список активных шрифтов) отлично работает при запуске из редактора сценариев, но возвращает ошибку при запуске из FileMaker. Любые идеи, как исправить, чтобы он мог работать при вызове в FileMaker?
Сообщение об ошибке: Не удается преобразовать { availableFontFamilies из sharedFontManager из NSFontManager} в строку типа.
use framework "AppKit"
tell application "FileMaker Pro"
set fontFamilyNames to (current application's NSFontManager's sharedFontManager's availableFontFamilies) as list
set AppleScript's text item delimiters to return
set fontList to every item of fontFamilyNames as string
set data cell "scriptResult" of table "globals" to fontList
end tell
Вспомогательные детали:
Он отлично работает в редакторе сценариев и соответствующим образом заполняет поле в FileMaker; он просто не работает при вызове в FileMaker. «Ячейка данных» будет содержимым «поля» в «записи» в «таблице». В этом случае «scriptResult» — это глобальное поле в таблице с именем «globals».
Спасибо Мокман. Часть вашего комментария была полезна для решения... изменение «установить ячейку данных» на «установить ячейку» при удалении прилагаемого оператора Tell сработало.

Разобрался... пришлось переместить оператор Tell ниже. Изменен «FileMaker Pro» на «текущее приложение», а также для упрощения.
use framework "AppKit"
set fontFamilyNames to (current application's NSFontManager's sharedFontManager's availableFontFamilies) as list
set AppleScript's text item delimiters to return
set fontList to every item of fontFamilyNames as string
tell current application
set data cell "scriptResult" of table "globals" to fontList
end tell
Это имеет очень мало смысла. Когда вы запускаете AppleScript из FileMaker, вы уже находитесь в контексте tell application "FileMaker Pro".
Ошибка в исходном сценарии заключается в том, что неправильно искать NSFontManager текущего приложения внутри блока сообщения приложения «FileMaker Pro». Это то же самое, что запрашивать текущее приложение текущего приложения (то есть FileMaker Pro при запуске сценария из него). Я не могу проверить, но если вы замените текущее приложение его или его, то исходный скрипт должен работать.
@RobertKniazidis это / это не сработало, но решилось с предложениями других. Спасибо за предложение.
Нет необходимости в какой-либо команде tell. Когда вы запускаете AppleScript из FileMaker, весь сценарий помещается в блок tell application "FileMaker Pro" по умолчанию. Вам нужно использовать tell только тогда, когда вы хотите, чтобы некоторые команды выполнялись другим приложением.
Вы должны быть в состоянии сделать просто:
use framework "AppKit"
set fontFamilyNames to (current application's NSFontManager's sharedFontManager's availableFontFamilies) as list
set AppleScript's text item delimiters to return
set fontList to every item of fontFamilyNames as string
set cell "YourField" of table "YourTable" to fontList
(Предполагается, что это лучший способ получить список доступных шрифтов; я не изучал его и вижу, что есть альтернативы.)
Спасибо! Я не мог понять, почему он не работает без оператора tell ... изначально пробовал, но получил ошибку. Оказывается, «установить ячейку данных» вызывало проблему при запуске в Filemaker, и должно было быть просто «установить ячейку», чтобы разрешить ее, как отражает ваш код.
Это странно. AFAIK set data cell это то же самое, что и set cell. Но я вижу, что получаю сообщение об ошибке с set data cell, когда присутствует инструкция use framework "AppKit". Я не уверен, в чем причина этого (и ошибка -1728, а не ошибка, о которой вы сообщили изначально).
Да, я дал код ошибки, основанный на коде, который я опубликовал, который был с оператором tell, так как это, по крайней мере, работало с редактором сценариев. Как вы предположили, я думаю, что это может быть связано с AppKit. У меня есть другие сценарии, которые используют «установить ячейку данных» вместо «установить ячейку», которые работали нормально. В любом случае, хотя я не понимаю почему, по крайней мере, теперь это работает... Спасибо!
Не являюсь пользователем файлового менеджера, но кроме строки
set data cell…ваш скрипт работает нормально. Разве «ячейки данных» не являются элементом «записей»? Вместо стола? Кроме того, возможно, вам нужно установить «значение», а не саму ячейку.