osascript «Отображение диалога» иногда работает, а иногда и ошибки с «Не разрешено взаимодействие с пользователем» - PullRequest
1 голос
/ 07 декабря 2011

На моем MacBook OSX 10.7 (Lion) работает небольшой скрипт оболочки, который использует osascript для сбора информации от пользователя. Этот скрипт иногда отлично работает, а иногда возвращает execution error: System Events got an error: No user interaction allowed. (-1713).

Работает ли он или нет стабильно после перезагрузки моего Mac - если он работает, он будет работать до перезагрузки; если он не работает, он не будет работать, пока я не перезагружусь; когда я перезагружаюсь, я не могу предсказать, сработает ли это или нет, пока я не попробую, даже если запустить это первое, что я делаю после перезагрузки.

Соответствующую часть скрипта можно смоделировать в Terminal.app с помощью (скопируйте все это и вставьте в Terminal.app):

echo $(/usr/bin/osascript <<-'__HEREDOC__'
tell application "System Events"
  activate
  set input to display dialog "What you type here should be returned:" default answer "" buttons {"Cancel", "OK"} default button 2
  return text returned of input as string
end tell
__HEREDOC__
)

Если этот код показывает вам диалог, он работает для вас. Если отображается ошибка «Нет взаимодействия с пользователем…», это не работает для вас. Если вы перезагрузите компьютер, он может поменяться с рабочего на неработающий или обратно.

Google возвращает пару тысяч результатов для "osascript" Взаимодействие с пользователем не разрешено "", но я не могу найти других, страдающих противоречивыми результатами, которые я получаю. Некоторые предлагают обходной путь, включающий сохранение файла сценария и его выполнение из AppleScript с помощью

on run {sourcefile}
tell application “AppleScript Runner”
  do script sourcefile
end tell
end run

... Я не пробовал это, потому что это кажется очень уродливым. Что может быть причиной того, что это иногда не работает? Как вы решите проблему, подобную этой?

...