Получение ошибки AppleScript при запуске в Filemaker

Приведенный ниже код 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

Вспомогательные детали:

  • «Разрешить события Apple» включен в настройках безопасности FileMaker.
  • Другие мои сценарии AppleScript в Filemaker работают нормально
  • FileMaker имеет «Полный доступ к диску» в настройках безопасности MacOS.
  • Версии: FileMaker Pro 19.6.3.302, MacOS Ventura 13.3.1

Не являюсь пользователем файлового менеджера, но кроме строки set data cell… ваш скрипт работает нормально. Разве «ячейки данных» не являются элементом «записей»? Вместо стола? Кроме того, возможно, вам нужно установить «значение», а не саму ячейку.

Mockman 15.04.2023 00:30

Он отлично работает в редакторе сценариев и соответствующим образом заполняет поле в FileMaker; он просто не работает при вызове в FileMaker. «Ячейка данных» будет содержимым «поля» в «записи» в «таблице». В этом случае «scriptResult» — это глобальное поле в таблице с именем «globals».

Chris 15.04.2023 01:35

Спасибо Мокман. Часть вашего комментария была полезна для решения... изменение «установить ячейку данных» на «установить ячейку» при удалении прилагаемого оператора Tell сработало.

Chris 16.04.2023 19:16
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
65
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Разобрался... пришлось переместить оператор 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".

michael.hor257k 15.04.2023 04:06

Ошибка в исходном сценарии заключается в том, что неправильно искать NSFontManager текущего приложения внутри блока сообщения приложения «FileMaker Pro». Это то же самое, что запрашивать текущее приложение текущего приложения (то есть FileMaker Pro при запуске сценария из него). Я не могу проверить, но если вы замените текущее приложение его или его, то исходный скрипт должен работать.

Robert Kniazidis 15.04.2023 07:34

@RobertKniazidis это / это не сработало, но решилось с предложениями других. Спасибо за предложение.

Chris 17.04.2023 03:58
Ответ принят как подходящий

Нет необходимости в какой-либо команде 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, и должно было быть просто «установить ячейку», чтобы разрешить ее, как отражает ваш код.

Chris 16.04.2023 19:20

Это странно. AFAIK set data cell это то же самое, что и set cell. Но я вижу, что получаю сообщение об ошибке с set data cell, когда присутствует инструкция use framework "AppKit". Я не уверен, в чем причина этого (и ошибка -1728, а не ошибка, о которой вы сообщили изначально).

michael.hor257k 16.04.2023 19:52

Да, я дал код ошибки, основанный на коде, который я опубликовал, который был с оператором tell, так как это, по крайней мере, работало с редактором сценариев. Как вы предположили, я думаю, что это может быть связано с AppKit. У меня есть другие сценарии, которые используют «установить ячейку данных» вместо «установить ячейку», которые работали нормально. В любом случае, хотя я не понимаю почему, по крайней мере, теперь это работает... Спасибо!

Chris 17.04.2023 03:56

Другие вопросы по теме